passenger 3.9.1.beta → 3.9.2.beta
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/.travis.yml +13 -0
- data/CONTRIBUTING.md +287 -0
- data/INSTALL.md +7 -0
- data/NEWS +32 -0
- data/README.md +46 -0
- data/Rakefile +2 -2
- data/bin/passenger +1 -1
- data/bin/passenger-config +1 -1
- data/bin/passenger-install-apache2-module +1 -1
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-memory-stats +1 -1
- data/bin/passenger-status +1 -1
- data/build/agents.rb +7 -7
- data/build/apache2.rb +2 -2
- data/build/basics.rb +3 -7
- data/build/common_library.rb +14 -7
- data/build/cplusplus_support.rb +1 -1
- data/build/cxx_tests.rb +19 -7
- data/build/documentation.rb +1 -1
- data/build/integration_tests.rb +2 -2
- data/build/misc.rb +6 -6
- data/build/nginx.rb +1 -1
- data/build/oxt_tests.rb +1 -1
- data/build/packaging.rb +13 -23
- data/build/rake_extensions.rb +1 -1
- data/build/rpm.rb +1 -1
- data/build/ruby_extension.rb +2 -2
- data/build/ruby_tests.rb +4 -4
- data/build/test_basics.rb +15 -2
- data/dev/copy_boost_headers.rb +18 -8
- data/dev/find_owner_pipe_leaks.rb +1 -1
- data/dev/render_error_pages.rb +1 -1
- data/dev/run_travis.sh +39 -0
- data/doc/Architectural overview.html +55 -21
- data/doc/{DebuggingAndStressTesting.txt.md → DebuggingAndStressTesting.md} +12 -1
- data/doc/Security of user switching support.html +47 -16
- data/doc/Users guide Apache.html +802 -378
- data/doc/Users guide Apache.idmap.txt +85 -209
- data/doc/Users guide Apache.txt +65 -338
- data/doc/Users guide Nginx.html +715 -252
- data/doc/Users guide Nginx.idmap.txt +71 -147
- data/doc/Users guide Nginx.txt +29 -245
- data/doc/Users guide Standalone.html +45 -14
- data/doc/Users guide Standalone.idmap.txt +0 -2
- data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +1 -1
- data/doc/users_guide_snippets/installation.txt +604 -0
- data/doc/users_guide_snippets/support_information.txt +5 -4
- data/doc/users_guide_snippets/tips.txt +54 -1
- data/ext/apache2/Bucket.cpp +1 -1
- data/ext/apache2/Bucket.h +1 -1
- data/ext/apache2/Configuration.cpp +2 -14
- data/ext/apache2/Configuration.h +1 -1
- data/ext/apache2/Configuration.hpp +3 -22
- data/ext/apache2/DirectoryMapper.h +1 -1
- data/ext/apache2/Hooks.cpp +5 -5
- data/ext/apache2/Hooks.h +1 -1
- data/ext/apache2/mod_passenger.c +1 -1
- data/ext/boost/aligned_storage.hpp +181 -0
- data/ext/boost/array.hpp +446 -0
- data/ext/boost/cerrno.hpp +331 -0
- data/ext/boost/chrono/ceil.hpp +36 -0
- data/ext/boost/chrono/clock_string.hpp +25 -0
- data/ext/boost/chrono/config.hpp +215 -0
- data/ext/boost/chrono/detail/is_evenly_divisible_by.hpp +31 -0
- data/ext/boost/chrono/detail/static_assert.hpp +30 -0
- data/ext/boost/chrono/detail/system.hpp +29 -0
- data/ext/boost/chrono/duration.hpp +795 -0
- data/ext/boost/chrono/system_clocks.hpp +233 -0
- data/ext/boost/chrono/time_point.hpp +379 -0
- data/ext/boost/concept_check.hpp +5 -5
- data/ext/boost/config/compiler/borland.hpp +29 -27
- data/ext/boost/config/compiler/clang.hpp +40 -26
- data/ext/boost/config/compiler/codegear.hpp +20 -19
- data/ext/boost/config/compiler/common_edg.hpp +27 -25
- data/ext/boost/config/compiler/cray.hpp +24 -22
- data/ext/boost/config/compiler/digitalmars.hpp +26 -24
- data/ext/boost/config/compiler/gcc.hpp +32 -30
- data/ext/boost/config/compiler/gcc_xml.hpp +26 -25
- data/ext/boost/config/compiler/hp_acc.hpp +26 -24
- data/ext/boost/config/compiler/intel.hpp +26 -24
- data/ext/boost/config/compiler/metrowerks.hpp +27 -25
- data/ext/boost/config/compiler/mpw.hpp +27 -25
- data/ext/boost/config/compiler/pathscale.hpp +41 -41
- data/ext/boost/config/compiler/pgi.hpp +70 -29
- data/ext/boost/config/compiler/sunpro_cc.hpp +27 -25
- data/ext/boost/config/compiler/vacpp.hpp +36 -26
- data/ext/boost/config/compiler/visualc.hpp +80 -57
- data/ext/boost/config/stdlib/dinkumware.hpp +25 -22
- data/ext/boost/config/stdlib/libcomo.hpp +23 -20
- data/ext/boost/config/stdlib/libcpp.hpp +5 -4
- data/ext/boost/config/stdlib/libstdcpp3.hpp +34 -25
- data/ext/boost/config/stdlib/modena.hpp +23 -20
- data/ext/boost/config/stdlib/msl.hpp +23 -20
- data/ext/boost/config/stdlib/roguewave.hpp +23 -20
- data/ext/boost/config/stdlib/sgi.hpp +23 -20
- data/ext/boost/config/stdlib/stlport.hpp +23 -24
- data/ext/boost/config/stdlib/vacpp.hpp +23 -20
- data/ext/boost/config/suffix.hpp +266 -75
- data/ext/boost/container/container_fwd.hpp +39 -43
- data/ext/boost/date_time/adjust_functors.hpp +1 -1
- data/ext/boost/date_time/c_time.hpp +1 -1
- data/ext/boost/date_time/compiler_config.hpp +1 -1
- data/ext/boost/date_time/constrained_value.hpp +1 -1
- data/ext/boost/date_time/date.hpp +3 -3
- data/ext/boost/date_time/date_clock_device.hpp +1 -1
- data/ext/boost/date_time/date_defs.hpp +1 -1
- data/ext/boost/date_time/date_duration.hpp +9 -9
- data/ext/boost/date_time/date_duration_types.hpp +1 -1
- data/ext/boost/date_time/date_facet.hpp +7 -4
- data/ext/boost/date_time/date_format_simple.hpp +1 -1
- data/ext/boost/date_time/date_formatting.hpp +4 -2
- data/ext/boost/date_time/date_formatting_limited.hpp +1 -1
- data/ext/boost/date_time/date_formatting_locales.hpp +1 -1
- data/ext/boost/date_time/date_generator_formatter.hpp +1 -1
- data/ext/boost/date_time/date_generator_parser.hpp +1 -1
- data/ext/boost/date_time/date_generators.hpp +35 -35
- data/ext/boost/date_time/date_iterator.hpp +15 -15
- data/ext/boost/date_time/date_names_put.hpp +26 -26
- data/ext/boost/date_time/date_parsing.hpp +3 -1
- data/ext/boost/date_time/dst_rules.hpp +2 -2
- data/ext/boost/date_time/filetime_functions.hpp +1 -1
- data/ext/boost/date_time/format_date_parser.hpp +1 -7
- data/ext/boost/date_time/gregorian/conversion.hpp +1 -1
- data/ext/boost/date_time/gregorian/formatters.hpp +1 -1
- data/ext/boost/date_time/gregorian/formatters_limited.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_calendar.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_date.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_day.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_duration.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_month.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_weekday.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_year.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_ymd.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian_io.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian_types.hpp +1 -1
- data/ext/boost/date_time/gregorian/parsers.hpp +1 -1
- data/ext/boost/date_time/gregorian_calendar.hpp +1 -1
- data/ext/boost/date_time/gregorian_calendar.ipp +1 -1
- data/ext/boost/date_time/int_adapter.hpp +1 -1
- data/ext/boost/date_time/iso_format.hpp +1 -1
- data/ext/boost/date_time/locale_config.hpp +1 -1
- data/ext/boost/date_time/microsec_time_clock.hpp +1 -1
- data/ext/boost/date_time/parse_format_base.hpp +1 -1
- data/ext/boost/date_time/period.hpp +1 -1
- data/ext/boost/date_time/period_formatter.hpp +5 -5
- data/ext/boost/date_time/period_parser.hpp +1 -1
- data/ext/boost/date_time/posix_time/conversion.hpp +1 -1
- data/ext/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/ext/boost/date_time/posix_time/posix_time_duration.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_io.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_system.hpp +1 -1
- data/ext/boost/date_time/posix_time/ptime.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_formatters.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_parsers.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_period.hpp +1 -1
- data/ext/boost/date_time/special_defs.hpp +1 -1
- data/ext/boost/date_time/special_values_formatter.hpp +1 -1
- data/ext/boost/date_time/string_convert.hpp +1 -1
- data/ext/boost/date_time/string_parse_tree.hpp +1 -1
- data/ext/boost/date_time/strings_from_facet.hpp +1 -1
- data/ext/boost/date_time/time.hpp +1 -1
- data/ext/boost/date_time/time_clock.hpp +1 -1
- data/ext/boost/date_time/time_defs.hpp +1 -1
- data/ext/boost/date_time/time_duration.hpp +17 -6
- data/ext/boost/date_time/time_facet.hpp +1 -1
- data/ext/boost/date_time/time_formatting_streams.hpp +1 -1
- data/ext/boost/date_time/time_iterator.hpp +17 -17
- data/ext/boost/date_time/time_parsing.hpp +6 -3
- data/ext/boost/date_time/time_resolution_traits.hpp +1 -1
- data/ext/boost/date_time/time_system_counted.hpp +1 -1
- data/ext/boost/date_time/time_system_split.hpp +1 -1
- data/ext/boost/date_time/wrapping_int.hpp +27 -27
- data/ext/boost/date_time/year_month_day.hpp +1 -1
- data/ext/boost/detail/container_fwd.hpp +162 -0
- data/ext/boost/detail/is_incrementable.hpp +134 -0
- data/ext/boost/detail/scoped_enum_emulation.hpp +337 -0
- data/ext/boost/exception/detail/attribute_noreturn.hpp +1 -1
- data/ext/boost/exception/detail/error_info_impl.hpp +2 -1
- data/ext/boost/exception/detail/exception_ptr.hpp +7 -2
- data/ext/boost/exception/exception.hpp +29 -2
- data/ext/boost/exception/info.hpp +1 -1
- data/ext/boost/foreach.hpp +1128 -0
- data/ext/boost/foreach_fwd.hpp +51 -0
- data/ext/boost/function/function_template.hpp +50 -1
- data/ext/boost/functional/hash.hpp +7 -0
- data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +29 -0
- data/ext/boost/functional/hash/detail/float_functions.hpp +246 -0
- data/ext/boost/functional/hash/detail/hash_float.hpp +268 -0
- data/ext/boost/functional/hash/detail/limits.hpp +61 -0
- data/ext/boost/functional/hash/extensions.hpp +367 -0
- data/ext/boost/functional/hash/hash.hpp +509 -0
- data/ext/boost/functional/hash/hash_fwd.hpp +40 -0
- data/ext/boost/functional/hash_fwd.hpp +7 -0
- data/ext/boost/indirect_reference.hpp +43 -0
- data/ext/boost/integer.hpp +19 -15
- data/ext/boost/integer/static_log2.hpp +127 -0
- data/ext/boost/integer_traits.hpp +1 -1
- data/ext/boost/iterator/iterator_facade.hpp +32 -36
- data/ext/boost/iterator/reverse_iterator.hpp +1 -1
- data/ext/boost/iterator/transform_iterator.hpp +1 -1
- data/ext/boost/lambda/core.hpp +79 -0
- data/ext/boost/lambda/detail/actions.hpp +174 -0
- data/ext/boost/lambda/detail/arity_code.hpp +110 -0
- data/ext/boost/lambda/detail/function_adaptors.hpp +789 -0
- data/ext/boost/lambda/detail/is_instance_of.hpp +104 -0
- data/ext/boost/lambda/detail/lambda_config.hpp +48 -0
- data/ext/boost/lambda/detail/lambda_functor_base.hpp +615 -0
- data/ext/boost/lambda/detail/lambda_functors.hpp +324 -0
- data/ext/boost/lambda/detail/lambda_fwd.hpp +74 -0
- data/ext/boost/lambda/detail/lambda_traits.hpp +578 -0
- data/ext/boost/lambda/detail/member_ptr.hpp +737 -0
- data/ext/boost/lambda/detail/operator_actions.hpp +139 -0
- data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +271 -0
- data/ext/boost/lambda/detail/operator_return_type_traits.hpp +917 -0
- data/ext/boost/lambda/detail/operators.hpp +370 -0
- data/ext/boost/lambda/detail/ret.hpp +325 -0
- data/ext/boost/lambda/detail/return_type_traits.hpp +282 -0
- data/ext/boost/lambda/detail/select_functions.hpp +74 -0
- data/ext/boost/lambda/lambda.hpp +34 -0
- data/ext/boost/lexical_cast.hpp +807 -497
- data/ext/boost/libs/system/src/error_code.cpp +430 -0
- data/ext/boost/libs/system/src/local_free_on_destruction.hpp +40 -0
- data/ext/boost/libs/thread/src/future.cpp +61 -0
- data/ext/boost/{src → libs/thread/src}/pthread/once.cpp +28 -9
- data/ext/boost/{src → libs/thread/src}/pthread/thread.cpp +139 -47
- data/ext/boost/{src → libs/thread/src}/pthread/timeconv.inl +0 -0
- data/ext/boost/{src → libs/thread/src}/tss_null.cpp +2 -2
- data/ext/boost/math/policies/policy.hpp +4 -4
- data/ext/boost/math/special_functions/fpclassify.hpp +10 -6
- data/ext/boost/math/special_functions/math_fwd.hpp +226 -0
- data/ext/boost/math/tools/config.hpp +10 -1
- data/ext/boost/move/move.hpp +70 -19
- data/ext/boost/mpl/O1_size.hpp +1 -1
- data/ext/boost/mpl/O1_size_fwd.hpp +1 -1
- data/ext/boost/mpl/accumulate.hpp +39 -0
- data/ext/boost/mpl/advance.hpp +1 -1
- data/ext/boost/mpl/advance_fwd.hpp +1 -1
- data/ext/boost/mpl/alias.hpp +21 -0
- data/ext/boost/mpl/always.hpp +1 -1
- data/ext/boost/mpl/and.hpp +1 -1
- data/ext/boost/mpl/apply.hpp +1 -1
- data/ext/boost/mpl/apply_fwd.hpp +1 -1
- data/ext/boost/mpl/apply_wrap.hpp +1 -1
- data/ext/boost/mpl/arg.hpp +1 -1
- data/ext/boost/mpl/arg_fwd.hpp +1 -1
- data/ext/boost/mpl/arithmetic.hpp +25 -0
- data/ext/boost/mpl/as_sequence.hpp +38 -0
- data/ext/boost/mpl/assert.hpp +1 -1
- data/ext/boost/mpl/at.hpp +1 -1
- data/ext/boost/mpl/at_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/adl_barrier.hpp +1 -1
- data/ext/boost/mpl/aux_/advance_backward.hpp +1 -1
- data/ext/boost/mpl/aux_/advance_forward.hpp +1 -1
- data/ext/boost/mpl/aux_/apply_1st.hpp +35 -0
- data/ext/boost/mpl/aux_/arg_typedef.hpp +1 -1
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +1 -1
- data/ext/boost/mpl/aux_/arity.hpp +1 -1
- data/ext/boost/mpl/aux_/arity_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/at_impl.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/clear_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/common_name_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/comparison_op.hpp +1 -1
- data/ext/boost/mpl/aux_/config/adl.hpp +1 -1
- data/ext/boost/mpl/aux_/config/arrays.hpp +1 -1
- data/ext/boost/mpl/aux_/config/bind.hpp +1 -1
- data/ext/boost/mpl/aux_/config/compiler.hpp +1 -1
- data/ext/boost/mpl/aux_/config/ctps.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/config/eti.hpp +1 -1
- data/ext/boost/mpl/aux_/config/forwarding.hpp +1 -1
- data/ext/boost/mpl/aux_/config/gcc.hpp +1 -1
- data/ext/boost/mpl/aux_/config/has_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +1 -1
- data/ext/boost/mpl/aux_/config/integral.hpp +1 -1
- data/ext/boost/mpl/aux_/config/intel.hpp +1 -1
- data/ext/boost/mpl/aux_/config/lambda.hpp +1 -1
- data/ext/boost/mpl/aux_/config/msvc.hpp +1 -1
- data/ext/boost/mpl/aux_/config/msvc_typename.hpp +1 -1
- data/ext/boost/mpl/aux_/config/nttp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/operators.hpp +33 -0
- data/ext/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
- data/ext/boost/mpl/aux_/config/pp_counter.hpp +1 -1
- data/ext/boost/mpl/aux_/config/preprocessor.hpp +1 -1
- data/ext/boost/mpl/aux_/config/static_constant.hpp +1 -1
- data/ext/boost/mpl/aux_/config/ttp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/typeof.hpp +1 -1
- data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +1 -1
- data/ext/boost/mpl/aux_/config/workaround.hpp +1 -1
- data/ext/boost/mpl/aux_/contains_impl.hpp +1 -1
- 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_/fold_impl.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/has_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/has_begin.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/has_tag.hpp +1 -1
- data/ext/boost/mpl/aux_/has_type.hpp +1 -1
- data/ext/boost/mpl/aux_/include_preprocessed.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/integral_wrapper.hpp +1 -1
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/lambda_no_ctps.hpp +193 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/lambda_support.hpp +1 -1
- data/ext/boost/mpl/aux_/largest_int.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/msvc_is_class.hpp +58 -0
- data/ext/boost/mpl/aux_/msvc_never_true.hpp +1 -1
- data/ext/boost/mpl/aux_/msvc_type.hpp +1 -1
- data/ext/boost/mpl/aux_/na.hpp +1 -1
- data/ext/boost/mpl/aux_/na_assert.hpp +1 -1
- data/ext/boost/mpl/aux_/na_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/na_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/nttp_decl.hpp +1 -1
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +1 -1
- data/ext/boost/mpl/aux_/numeric_op.hpp +1 -1
- 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 +461 -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 +119 -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/bcc_pre590/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp +117 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp +300 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp +397 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/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/basic_bind.hpp +440 -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/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp +229 -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/modulus.hpp +101 -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/unpack_args.hpp +94 -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 +1 -1
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/enum.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/ext_params.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/is_seq.hpp +54 -0
- data/ext/boost/mpl/aux_/preprocessor/params.hpp +1 -1
- 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 +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/push_front_impl.hpp +1 -1
- 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 +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/sort_impl.hpp +121 -0
- data/ext/boost/mpl/aux_/static_cast.hpp +1 -1
- data/ext/boost/mpl/aux_/template_arity.hpp +1 -1
- data/ext/boost/mpl/aux_/template_arity_fwd.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/aux_/transform_iter.hpp +123 -0
- data/ext/boost/mpl/aux_/type_wrapper.hpp +1 -1
- data/ext/boost/mpl/aux_/unwrap.hpp +47 -0
- data/ext/boost/mpl/aux_/value_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/yes_no.hpp +1 -1
- data/ext/boost/mpl/back.hpp +39 -0
- data/ext/boost/mpl/back_fwd.hpp +1 -1
- data/ext/boost/mpl/back_inserter.hpp +1 -1
- data/ext/boost/mpl/base.hpp +35 -0
- data/ext/boost/mpl/begin.hpp +19 -0
- data/ext/boost/mpl/begin_end.hpp +1 -1
- data/ext/boost/mpl/begin_end_fwd.hpp +1 -1
- data/ext/boost/mpl/bind.hpp +1 -1
- data/ext/boost/mpl/bind_fwd.hpp +1 -1
- data/ext/boost/mpl/bitand.hpp +45 -0
- data/ext/boost/mpl/bitor.hpp +45 -0
- data/ext/boost/mpl/bitwise.hpp +24 -0
- data/ext/boost/mpl/bitxor.hpp +23 -0
- data/ext/boost/mpl/bool.hpp +1 -1
- data/ext/boost/mpl/bool_fwd.hpp +1 -1
- data/ext/boost/mpl/char.hpp +22 -0
- data/ext/boost/mpl/char_fwd.hpp +27 -0
- data/ext/boost/mpl/clear.hpp +1 -1
- data/ext/boost/mpl/clear_fwd.hpp +1 -1
- data/ext/boost/mpl/comparison.hpp +1 -1
- data/ext/boost/mpl/contains.hpp +1 -1
- data/ext/boost/mpl/contains_fwd.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/distance.hpp +1 -1
- data/ext/boost/mpl/distance_fwd.hpp +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- data/ext/boost/mpl/filter_view.hpp +46 -0
- data/ext/boost/mpl/find.hpp +1 -1
- data/ext/boost/mpl/find_if.hpp +1 -1
- data/ext/boost/mpl/fold.hpp +1 -1
- data/ext/boost/mpl/for_each.hpp +116 -0
- data/ext/boost/mpl/front.hpp +39 -0
- data/ext/boost/mpl/front_fwd.hpp +1 -1
- data/ext/boost/mpl/front_inserter.hpp +1 -1
- data/ext/boost/mpl/greater.hpp +1 -1
- data/ext/boost/mpl/greater_equal.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/identity.hpp +1 -1
- data/ext/boost/mpl/if.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/int.hpp +1 -1
- data/ext/boost/mpl/int_fwd.hpp +1 -1
- data/ext/boost/mpl/integral_c.hpp +1 -1
- data/ext/boost/mpl/integral_c_fwd.hpp +1 -1
- data/ext/boost/mpl/integral_c_tag.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/iter_fold_if.hpp +1 -1
- data/ext/boost/mpl/iterator_category.hpp +35 -0
- data/ext/boost/mpl/iterator_range.hpp +1 -1
- data/ext/boost/mpl/iterator_tags.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/lambda_fwd.hpp +1 -1
- data/ext/boost/mpl/less.hpp +1 -1
- data/ext/boost/mpl/less_equal.hpp +1 -1
- data/ext/boost/mpl/limits/arity.hpp +1 -1
- data/ext/boost/mpl/limits/list.hpp +1 -1
- data/ext/boost/mpl/limits/map.hpp +21 -0
- data/ext/boost/mpl/limits/set.hpp +21 -0
- data/ext/boost/mpl/limits/string.hpp +21 -0
- data/ext/boost/mpl/limits/unrolling.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +1 -1
- data/ext/boost/mpl/list.hpp +1 -1
- data/ext/boost/mpl/list/aux_/O1_size.hpp +1 -1
- data/ext/boost/mpl/list/aux_/begin_end.hpp +1 -1
- data/ext/boost/mpl/list/aux_/clear.hpp +1 -1
- data/ext/boost/mpl/list/aux_/empty.hpp +1 -1
- data/ext/boost/mpl/list/aux_/front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/list/aux_/item.hpp +1 -1
- data/ext/boost/mpl/list/aux_/iterator.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp +164 -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 +1 -1
- data/ext/boost/mpl/list/aux_/push_front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/size.hpp +1 -1
- data/ext/boost/mpl/list/aux_/tag.hpp +1 -1
- data/ext/boost/mpl/list/list0.hpp +1 -1
- data/ext/boost/mpl/list/list0_c.hpp +31 -0
- data/ext/boost/mpl/list/list10.hpp +1 -1
- data/ext/boost/mpl/list/list10_c.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/long.hpp +1 -1
- data/ext/boost/mpl/long_fwd.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/modulus.hpp +22 -0
- data/ext/boost/mpl/multiplies.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/next.hpp +1 -1
- data/ext/boost/mpl/next_prior.hpp +1 -1
- data/ext/boost/mpl/not.hpp +1 -1
- data/ext/boost/mpl/not_equal_to.hpp +1 -1
- data/ext/boost/mpl/numeric_cast.hpp +1 -1
- data/ext/boost/mpl/or.hpp +1 -1
- data/ext/boost/mpl/order.hpp +41 -0
- data/ext/boost/mpl/order_fwd.hpp +25 -0
- data/ext/boost/mpl/pair.hpp +1 -1
- data/ext/boost/mpl/pair_view.hpp +169 -0
- data/ext/boost/mpl/partition.hpp +53 -0
- data/ext/boost/mpl/placeholders.hpp +1 -1
- data/ext/boost/mpl/plus.hpp +1 -1
- data/ext/boost/mpl/pop_back.hpp +39 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +1 -1
- data/ext/boost/mpl/pop_front.hpp +39 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +1 -1
- data/ext/boost/mpl/print.hpp +74 -0
- data/ext/boost/mpl/prior.hpp +1 -1
- data/ext/boost/mpl/protect.hpp +1 -1
- data/ext/boost/mpl/push_back.hpp +1 -1
- data/ext/boost/mpl/push_back_fwd.hpp +1 -1
- data/ext/boost/mpl/push_front.hpp +1 -1
- data/ext/boost/mpl/push_front_fwd.hpp +1 -1
- data/ext/boost/mpl/quote.hpp +1 -1
- data/ext/boost/mpl/range_c.hpp +48 -0
- data/ext/boost/mpl/remove.hpp +52 -0
- data/ext/boost/mpl/remove_if.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/reverse_iter_fold.hpp +56 -0
- data/ext/boost/mpl/same_as.hpp +1 -1
- data/ext/boost/mpl/sequence_tag.hpp +1 -1
- data/ext/boost/mpl/sequence_tag_fwd.hpp +1 -1
- 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 +80 -0
- data/ext/boost/mpl/set/aux_/iterator.hpp +98 -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 +1 -1
- data/ext/boost/mpl/size_fwd.hpp +1 -1
- data/ext/boost/mpl/size_t.hpp +1 -1
- data/ext/boost/mpl/size_t_fwd.hpp +1 -1
- 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/string.hpp +607 -0
- data/ext/boost/mpl/switch.hpp +49 -0
- data/ext/boost/mpl/tag.hpp +1 -1
- data/ext/boost/mpl/times.hpp +1 -1
- 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 +150 -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 +1 -1
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/at.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/clear.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/empty.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/item.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/iterator.hpp +1 -1
- 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 +1 -1
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +1 -1
- 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_c.hpp +149 -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_c.hpp +154 -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 +1 -1
- data/ext/boost/mpl/vector/aux_/push_front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/size.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/tag.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/vector0.hpp +1 -1
- data/ext/boost/mpl/vector/vector0.hpp +1 -1
- data/ext/boost/mpl/vector/vector0_c.hpp +31 -0
- data/ext/boost/mpl/vector/vector10.hpp +1 -1
- data/ext/boost/mpl/vector/vector10_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector20.hpp +1 -1
- 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 +61 -0
- data/ext/boost/mpl/void.hpp +1 -1
- data/ext/boost/mpl/void_fwd.hpp +1 -1
- data/ext/boost/mpl/zip_view.hpp +65 -0
- data/ext/boost/numeric/conversion/converter_policies.hpp +8 -0
- data/ext/boost/optional/optional.hpp +2 -2
- data/ext/boost/pointee.hpp +74 -0
- data/ext/boost/preprocessor/{control/deduce_d.hpp → dec.hpp} +3 -8
- data/ext/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted_params.hpp +17 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
- data/ext/boost/preprocessor/repeat_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
- data/ext/boost/range/algorithm/equal.hpp +15 -5
- data/ext/boost/range/as_literal.hpp +1 -1
- data/ext/boost/range/size.hpp +3 -3
- data/ext/boost/range/size_type.hpp +33 -23
- data/ext/boost/ratio/config.hpp +86 -0
- data/ext/boost/ratio/detail/mpl/abs.hpp +89 -0
- data/ext/boost/ratio/detail/mpl/gcd.hpp +124 -0
- data/ext/boost/ratio/detail/mpl/lcm.hpp +126 -0
- data/ext/boost/ratio/detail/mpl/sign.hpp +89 -0
- data/ext/boost/ratio/detail/overflow_helpers.hpp +367 -0
- data/ext/boost/ratio/ratio.hpp +233 -0
- data/ext/boost/ratio/ratio_fwd.hpp +84 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -3
- data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +150 -0
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +27 -2
- data/ext/boost/swap.hpp +12 -0
- data/ext/boost/system/api_config.hpp +42 -0
- data/ext/boost/system/config.hpp +69 -0
- data/ext/boost/system/error_code.hpp +513 -0
- data/ext/boost/system/system_error.hpp +80 -0
- data/ext/boost/thread/barrier.hpp +4 -4
- data/ext/boost/thread/cv_status.hpp +26 -0
- data/ext/boost/thread/detail/config.hpp +119 -5
- data/ext/boost/thread/detail/delete.hpp +45 -0
- data/ext/boost/thread/detail/memory.hpp +156 -0
- data/ext/boost/thread/detail/move.hpp +181 -1
- data/ext/boost/thread/detail/platform.hpp +3 -1
- data/ext/boost/thread/detail/thread.hpp +254 -157
- data/ext/boost/thread/detail/thread_interruption.hpp +12 -11
- data/ext/boost/thread/exceptions.hpp +125 -136
- data/ext/boost/thread/future.hpp +778 -353
- data/ext/boost/thread/locks.hpp +548 -347
- data/ext/boost/thread/once.hpp +3 -1
- data/ext/boost/thread/pthread/condition_variable.hpp +140 -31
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +143 -15
- data/ext/boost/thread/pthread/mutex.hpp +76 -24
- data/ext/boost/thread/pthread/once.hpp +53 -22
- data/ext/boost/thread/pthread/recursive_mutex.hpp +74 -27
- data/ext/boost/thread/pthread/shared_mutex.hpp +250 -2
- data/ext/boost/thread/pthread/thread_data.hpp +109 -6
- data/ext/boost/thread/pthread/thread_heap_alloc.hpp +4 -4
- data/ext/boost/thread/reverse_lock.hpp +58 -0
- data/ext/boost/thread/shared_lock_guard.hpp +52 -0
- data/ext/boost/thread/shared_mutex.hpp +7 -2
- data/ext/boost/thread/thread.hpp +2 -1
- data/ext/boost/thread/v2/thread.hpp +56 -0
- data/ext/boost/thread/xtime.hpp +4 -4
- data/ext/boost/throw_exception.hpp +13 -4
- data/ext/boost/tuple/detail/tuple_basic.hpp +980 -0
- data/ext/boost/tuple/tuple.hpp +90 -0
- data/ext/boost/type_traits/add_cv.hpp +48 -0
- data/ext/boost/type_traits/common_type.hpp +158 -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 +1 -1
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/detail/type_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/type_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/has_nothrow_assign.hpp +44 -0
- data/ext/boost/type_traits/has_trivial_assign.hpp +57 -0
- data/ext/boost/type_traits/intrinsics.hpp +4 -3
- data/ext/boost/type_traits/is_compound.hpp +46 -0
- data/ext/boost/type_traits/is_empty.hpp +229 -0
- data/ext/boost/type_traits/is_object.hpp +53 -0
- data/ext/boost/type_traits/is_stateless.hpp +48 -0
- data/ext/boost/type_traits/object_traits.hpp +33 -0
- data/ext/boost/type_traits/remove_bounds.hpp +48 -0
- data/ext/boost/type_traits/remove_volatile.hpp +88 -0
- data/ext/boost/type_traits/same_traits.hpp +15 -0
- data/ext/boost/type_traits/transform_traits.hpp +21 -0
- data/ext/boost/typeof/message.hpp +8 -0
- data/ext/boost/typeof/native.hpp +60 -0
- data/ext/boost/typeof/typeof.hpp +218 -0
- data/ext/boost/utility/declval.hpp +7 -2
- data/ext/boost/utility/detail/result_of_iterate.hpp +98 -32
- data/ext/boost/utility/result_of.hpp +92 -8
- data/ext/boost/version.hpp +32 -0
- data/ext/common/Account.h +1 -1
- data/ext/common/AccountsDatabase.cpp +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/AgentsStarter.cpp +5 -6
- data/ext/common/AgentsStarter.h +4 -4
- data/ext/common/AgentsStarter.hpp +4 -6
- data/ext/common/AnsiColorConstants.h +1 -1
- data/ext/common/ApplicationPool2/Common.h +62 -2
- data/ext/common/ApplicationPool2/ComponentInfo.h +1 -1
- data/ext/common/ApplicationPool2/Group.h +411 -150
- data/ext/common/ApplicationPool2/Implementation.cpp +367 -86
- data/ext/common/ApplicationPool2/Options.h +6 -2
- data/ext/common/ApplicationPool2/PipeWatcher.h +1 -1
- data/ext/common/ApplicationPool2/Pool.h +260 -137
- data/ext/common/ApplicationPool2/Process.h +28 -27
- data/ext/common/ApplicationPool2/Session.h +4 -2
- data/ext/common/ApplicationPool2/Socket.h +1 -1
- data/ext/common/ApplicationPool2/Spawner.h +133 -77
- data/ext/common/ApplicationPool2/SuperGroup.h +16 -15
- data/ext/common/BackgroundEventLoop.cpp +1 -1
- data/ext/common/BackgroundEventLoop.h +1 -1
- data/ext/common/Constants.h +2 -2
- data/ext/common/EventedBufferedInput.h +1 -1
- data/ext/common/EventedClient.h +1 -1
- data/ext/common/EventedMessageServer.h +1 -1
- data/ext/common/EventedServer.h +1 -1
- data/ext/common/Exceptions.h +1 -1
- data/ext/common/FileDescriptor.h +1 -1
- data/ext/common/HttpConstants.h +8 -8
- data/ext/common/IniFile.h +1 -1
- data/ext/common/Logging.cpp +45 -20
- data/ext/common/Logging.h +16 -65
- data/ext/common/MessageClient.h +1 -1
- data/ext/common/MessageReadersWriters.h +1 -1
- data/ext/common/MessageServer.h +1 -1
- data/ext/common/MultiLibeio.cpp +1 -1
- data/ext/common/MultiLibeio.h +1 -1
- data/ext/common/RandomGenerator.h +1 -1
- data/ext/common/ResourceLocator.h +1 -1
- data/ext/common/SafeLibev.h +1 -1
- data/ext/common/ServerInstanceDir.h +1 -1
- data/ext/common/StaticString.h +1 -1
- data/ext/common/StringListCreator.h +1 -1
- data/ext/common/UnionStation.h +1 -1
- data/ext/common/Utils.cpp +6 -1
- data/ext/common/Utils.h +9 -1
- data/ext/common/Utils/BlockingQueue.h +1 -1
- data/ext/common/Utils/CachedFileStat.cpp +1 -1
- data/ext/common/Utils/CachedFileStat.h +1 -1
- data/ext/common/Utils/CachedFileStat.hpp +1 -1
- data/ext/common/Utils/FileChangeChecker.h +1 -1
- data/ext/common/Utils/HashMap.h +1 -1
- data/ext/common/Utils/HttpHeaderBufferer.h +1 -1
- data/ext/common/Utils/IOUtils.cpp +3 -3
- data/ext/common/Utils/IOUtils.h +1 -1
- data/ext/common/Utils/MemZeroGuard.h +1 -1
- data/ext/common/Utils/MemoryBarrier.h +1 -1
- data/ext/common/Utils/MessageIO.h +1 -1
- data/ext/common/Utils/MessagePassing.h +304 -0
- data/ext/common/Utils/ProcessMetricsCollector.h +1 -1
- data/ext/common/Utils/ScopeGuard.h +1 -1
- data/ext/common/Utils/StrIntUtils.cpp +40 -1
- data/ext/common/Utils/StrIntUtils.h +7 -1
- data/ext/common/Utils/StringMap.h +1 -1
- data/ext/common/Utils/SystemTime.cpp +1 -1
- data/ext/common/Utils/SystemTime.h +1 -1
- data/ext/common/Utils/Timer.h +1 -1
- data/ext/common/Utils/VariantMap.h +1 -1
- data/ext/common/agents/Base.cpp +182 -10
- data/ext/common/agents/Base.h +1 -1
- data/ext/common/agents/HelperAgent/AgentOptions.h +1 -1
- data/ext/common/agents/HelperAgent/BacktracesServer.h +1 -1
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +1 -1
- data/ext/common/agents/HelperAgent/Main.cpp +13 -5
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +1 -1
- data/ext/common/agents/HelperAgent/RequestHandler.h +23 -9
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +1 -1
- data/ext/common/agents/LoggingAgent/DataStoreId.h +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.cpp +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.h +1 -1
- data/ext/common/agents/LoggingAgent/LoggingServer.h +89 -214
- data/ext/common/agents/LoggingAgent/Main.cpp +9 -19
- data/ext/common/agents/LoggingAgent/RemoteSender.h +9 -2
- data/ext/common/agents/SpawnPreparer.cpp +70 -30
- data/ext/common/agents/Watchdog/Main.cpp +1 -1
- data/ext/libeio/Changes +4 -0
- data/ext/libeio/ecb.h +281 -24
- data/ext/libeio/eio.c +48 -63
- data/ext/libeio/eio.h +7 -6
- data/ext/libeio/libeio.m4 +0 -16
- data/ext/libeio/xthread.h +2 -2
- data/ext/libev/configure +299 -271
- data/ext/nginx/Configuration.c +15 -52
- data/ext/nginx/Configuration.h +0 -2
- data/ext/nginx/ContentHandler.c +13 -2
- data/ext/nginx/ngx_http_passenger_module.c +2 -19
- data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
- data/ext/oxt/dynamic_thread_group.hpp +2 -2
- data/ext/oxt/spin_lock.hpp +1 -1
- data/ext/oxt/system_calls.cpp +36 -13
- data/ext/oxt/thread.hpp +11 -5
- data/ext/ruby/extconf.rb +1 -1
- data/ext/ruby/passenger_native_support.c +3 -2
- data/helper-scripts/classic-rails-loader.rb +3 -1
- data/helper-scripts/classic-rails-preloader.rb +4 -1
- data/helper-scripts/node-loader.js +1 -1
- data/helper-scripts/prespawn +1 -1
- data/helper-scripts/rack-loader.rb +3 -1
- data/helper-scripts/rack-preloader.rb +4 -1
- data/helper-scripts/system-memory-stats.py +185 -0
- data/helper-scripts/wsgi-loader.py +1 -1
- data/lib/phusion_passenger.rb +3 -3
- data/lib/phusion_passenger/abstract_installer.rb +1 -1
- data/lib/phusion_passenger/admin_tools.rb +1 -1
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
- data/lib/phusion_passenger/admin_tools/server_instance.rb +1 -1
- data/lib/phusion_passenger/analytics_logger.rb +10 -4
- data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +3 -2
- data/lib/phusion_passenger/common_library.rb +1 -1
- data/lib/phusion_passenger/console_text_template.rb +1 -1
- data/lib/phusion_passenger/constants.rb +6 -5
- data/lib/phusion_passenger/debug_logging.rb +5 -1
- data/lib/phusion_passenger/dependencies.rb +3 -3
- data/lib/phusion_passenger/loader_shared_helpers.rb +12 -7
- data/lib/phusion_passenger/message_channel.rb +1 -1
- data/lib/phusion_passenger/message_client.rb +1 -1
- data/lib/phusion_passenger/native_support.rb +1 -1
- data/lib/phusion_passenger/packaging.rb +7 -4
- data/lib/phusion_passenger/platform_info.rb +1 -1
- data/lib/phusion_passenger/platform_info/apache.rb +2 -2
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +14 -5
- data/lib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/lib/phusion_passenger/platform_info/curl.rb +1 -1
- data/lib/phusion_passenger/platform_info/linux.rb +1 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/lib/phusion_passenger/platform_info/ruby.rb +2 -2
- data/lib/phusion_passenger/platform_info/zlib.rb +1 -1
- data/lib/phusion_passenger/plugin.rb +2 -2
- data/lib/phusion_passenger/preloader_shared_helpers.rb +14 -1
- data/lib/phusion_passenger/public_api.rb +8 -2
- data/lib/phusion_passenger/{classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb → rack/out_of_band_gc.rb} +35 -28
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +31 -6
- data/lib/phusion_passenger/rails3_extensions/init.rb +15 -9
- data/lib/phusion_passenger/request_handler.rb +104 -47
- data/lib/phusion_passenger/request_handler/thread_handler.rb +28 -7
- data/lib/phusion_passenger/ruby_core_enhancements.rb +34 -5
- data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
- data/lib/phusion_passenger/standalone/app_finder.rb +1 -1
- data/lib/phusion_passenger/standalone/command.rb +5 -5
- data/lib/phusion_passenger/standalone/config_file.rb +1 -1
- data/lib/phusion_passenger/standalone/help_command.rb +1 -1
- data/lib/phusion_passenger/standalone/main.rb +1 -1
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +1 -1
- data/lib/phusion_passenger/standalone/runtime_installer.rb +1 -1
- data/lib/phusion_passenger/standalone/start_command.rb +73 -21
- data/lib/phusion_passenger/standalone/status_command.rb +1 -1
- data/lib/phusion_passenger/standalone/stop_command.rb +1 -1
- data/lib/phusion_passenger/standalone/utils.rb +2 -2
- data/lib/phusion_passenger/standalone/version_command.rb +1 -1
- data/lib/phusion_passenger/utils.rb +1 -1
- data/lib/phusion_passenger/utils/ansi_colors.rb +2 -2
- data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
- data/lib/phusion_passenger/utils/robust_interruption.rb +10 -6
- data/lib/phusion_passenger/utils/tmpdir.rb +2 -2
- data/lib/phusion_passenger/utils/unseekable_socket.rb +1 -1
- data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
- data/resources/templates/error_layout.html.template +4 -0
- data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +1 -1
- data/resources/templates/standalone/config.erb +1 -0
- data/test/.rspec +3 -0
- data/test/config.json.travis +15 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -2
- data/test/cxx/ApplicationPool2/PoolTest.cpp +349 -128
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +21 -18
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +141 -118
- data/test/cxx/BufferedIOTest.cpp +11 -11
- data/test/cxx/CxxTestMain.cpp +40 -11
- data/test/cxx/EventedClientTest.cpp +18 -18
- data/test/cxx/FilterSupportTest.cpp +1 -1
- data/test/cxx/IOUtilsTest.cpp +18 -10
- data/test/cxx/MessageIOTest.cpp +9 -9
- data/test/cxx/MessagePassingTest.cpp +81 -0
- data/test/cxx/MessageReadersWritersTest.cpp +3 -4
- data/test/cxx/RequestHandlerTest.cpp +69 -9
- data/test/cxx/TestSupport.h +3 -1
- data/test/cxx/UnionStationTest.cpp +43 -82
- data/test/gdbinit.example +31 -0
- data/test/integration_tests/nginx_tests.rb +48 -0
- data/test/integration_tests/spec_helper.rb +1 -0
- data/test/ruby/analytics_logger_spec.rb +11 -19
- data/test/ruby/classic_rails/loader_spec.rb +3 -4
- data/test/ruby/classic_rails/preloader_spec.rb +3 -4
- data/test/ruby/rack/loader_spec.rb +2 -22
- data/test/ruby/rack/preloader_spec.rb +2 -28
- data/test/ruby/rails3.0/loader_spec.rb +26 -0
- data/test/ruby/rails3.0/preloader_spec.rb +32 -0
- data/test/ruby/rails3.1/loader_spec.rb +26 -0
- data/test/ruby/rails3.1/preloader_spec.rb +32 -0
- data/test/ruby/rails3.2/loader_spec.rb +26 -0
- data/test/ruby/rails3.2/preloader_spec.rb +32 -0
- data/test/ruby/request_handler_spec.rb +104 -13
- data/test/ruby/shared/{loader_spec.rb → loader_sharedspec.rb} +1 -1
- data/test/ruby/shared/rails/{analytics_logging_extensions_spec.rb → analytics_logging_extensions_sharedspec.rb} +26 -27
- data/test/ruby/shared/{ruby_loader_spec.rb → ruby_loader_sharedspec.rb} +1 -1
- data/test/ruby/spec_helper.rb +3 -3
- data/test/stub/rails2.3/app/helpers/bar_helper.rb +2 -0
- data/test/stub/rails2.3/app/helpers/foo_helper.rb +2 -0
- data/test/stub/rails3.0/config/environments/production.rb +1 -1
- data/test/stub/rails3.1/Gemfile +37 -0
- data/test/stub/rails3.1/Gemfile.lock +115 -0
- data/test/stub/rails3.1/README +261 -0
- data/test/stub/rails3.1/Rakefile +7 -0
- data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
- data/test/stub/rails3.1/app/assets/javascripts/application.js +9 -0
- data/test/stub/rails3.1/app/assets/stylesheets/application.css +7 -0
- data/test/stub/rails3.1/app/controllers/application_controller.rb +3 -0
- data/test/stub/rails3.1/app/helpers/application_helper.rb +2 -0
- data/test/stub/rails3.1/app/views/layouts/application.html.erb +14 -0
- data/test/stub/rails3.1/config.ru +4 -0
- data/test/stub/rails3.1/config/application.rb +48 -0
- data/test/stub/rails3.1/config/boot.rb +6 -0
- data/test/stub/rails3.1/config/database.yml +25 -0
- data/test/stub/rails3.1/config/environment.rb +5 -0
- data/test/stub/rails3.1/config/environments/development.rb +30 -0
- data/test/stub/rails3.1/config/environments/production.rb +60 -0
- data/test/stub/rails3.1/config/environments/test.rb +39 -0
- data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +7 -0
- data/test/stub/rails3.1/config/initializers/inflections.rb +10 -0
- data/test/stub/rails3.1/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails3.1/config/initializers/passenger.rb +1 -0
- data/test/stub/rails3.1/config/initializers/secret_token.rb +7 -0
- data/test/stub/rails3.1/config/initializers/session_store.rb +8 -0
- data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +14 -0
- data/test/stub/rails3.1/config/locales/en.yml +5 -0
- data/test/stub/rails3.1/config/routes.rb +58 -0
- data/test/stub/rails3.1/db/seeds.rb +7 -0
- data/test/stub/rails3.1/doc/README_FOR_APP +2 -0
- data/test/stub/rails3.1/public/404.html +26 -0
- data/test/stub/rails3.1/public/422.html +26 -0
- data/test/stub/rails3.1/public/500.html +26 -0
- data/test/stub/rails3.1/public/favicon.ico +0 -0
- data/test/stub/rails3.1/public/index.html +241 -0
- data/test/stub/rails3.1/public/robots.txt +5 -0
- data/test/stub/rails3.1/script/rails +6 -0
- data/test/stub/rails3.1/test/performance/browsing_test.rb +12 -0
- data/test/stub/rails3.1/test/test_helper.rb +13 -0
- data/test/stub/rails3.2/Gemfile +39 -0
- data/test/stub/rails3.2/Gemfile.lock +113 -0
- data/test/stub/rails3.2/Rakefile +7 -0
- data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
- data/test/stub/rails3.2/app/assets/javascripts/application.js +15 -0
- data/test/stub/rails3.2/app/assets/stylesheets/application.css +13 -0
- data/test/stub/rails3.2/app/controllers/application_controller.rb +3 -0
- data/test/stub/rails3.2/app/helpers/application_helper.rb +2 -0
- data/test/stub/rails3.2/app/views/layouts/application.html.erb +14 -0
- data/test/stub/rails3.2/config.ru +4 -0
- data/test/stub/rails3.2/config/application.rb +62 -0
- data/test/stub/rails3.2/config/boot.rb +6 -0
- data/test/stub/rails3.2/config/database.yml +25 -0
- data/test/stub/rails3.2/config/environment.rb +5 -0
- data/test/stub/rails3.2/config/environments/development.rb +37 -0
- data/test/stub/rails3.2/config/environments/production.rb +67 -0
- data/test/stub/rails3.2/config/environments/test.rb +37 -0
- data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +7 -0
- data/test/stub/rails3.2/config/initializers/inflections.rb +15 -0
- data/test/stub/rails3.2/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails3.2/config/initializers/passenger.rb +1 -0
- data/test/stub/rails3.2/config/initializers/secret_token.rb +7 -0
- data/test/stub/rails3.2/config/initializers/session_store.rb +8 -0
- data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +14 -0
- data/test/stub/rails3.2/config/locales/en.yml +5 -0
- data/test/stub/rails3.2/config/routes.rb +58 -0
- data/test/stub/rails3.2/db/seeds.rb +7 -0
- data/test/stub/rails3.2/doc/README_FOR_APP +2 -0
- data/test/stub/rails3.2/public/404.html +26 -0
- data/test/stub/rails3.2/public/422.html +26 -0
- data/test/stub/rails3.2/public/500.html +25 -0
- data/test/stub/rails3.2/public/favicon.ico +0 -0
- data/test/stub/rails3.2/public/index.html +241 -0
- data/test/stub/rails3.2/public/robots.txt +5 -0
- data/test/stub/rails3.2/script/rails +6 -0
- data/test/stub/rails3.2/test/performance/browsing_test.rb +12 -0
- data/test/stub/rails3.2/test/test_helper.rb +13 -0
- data/test/stub/wsgi/passenger_wsgi.py +12 -3
- data/test/support/test_helper.rb +5 -3
- data/test/tut/tut.h +61 -0
- metadata +1173 -236
- data/DEVELOPERS.TXT +0 -108
- data/INSTALL +0 -6
- data/README +0 -45
- data/ext/boost/config/platform/win32.hpp +0 -71
- data/ext/boost/implicit_cast.hpp +0 -29
- data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +0 -61
- data/ext/boost/preprocessor/arithmetic/mod.hpp +0 -39
- data/ext/boost/preprocessor/comparison/less_equal.hpp +0 -39
- data/ext/boost/preprocessor/logical/not.hpp +0 -30
- data/ext/boost/preprocessor/seq/cat.hpp +0 -49
- data/ext/boost/preprocessor/seq/fold_left.hpp +0 -1070
- data/ext/boost/preprocessor/seq/transform.hpp +0 -48
- data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +0 -63
- data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +0 -130
- data/ext/boost/utility.hpp +0 -20
- data/ext/boost/utility/base_from_member.hpp +0 -87
- data/ext/boost/utility/binary.hpp +0 -708
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +0 -67
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +0 -48
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +0 -59
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +0 -130
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +0 -47
- data/lib/phusion_passenger/classic_rails_extensions/init.rb +0 -125
data/doc/Users guide Nginx.html
CHANGED
@@ -795,11 +795,13 @@ install: function(toclevels) {
|
|
795
795
|
}
|
796
796
|
|
797
797
|
}
|
798
|
-
asciidoc.install(
|
798
|
+
asciidoc.install();
|
799
799
|
/*]]>*/
|
800
800
|
</script><style type="text/css">
|
801
801
|
body {
|
802
|
-
margin: 1em
|
802
|
+
margin: 1em auto 1em auto;
|
803
|
+
padding: 0 1em 0 1em;
|
804
|
+
max-width: 800px;
|
803
805
|
}
|
804
806
|
|
805
807
|
a.image {
|
@@ -878,6 +880,10 @@ a.image {
|
|
878
880
|
margin: 2em;
|
879
881
|
}
|
880
882
|
|
883
|
+
pre {
|
884
|
+
overflow: auto;
|
885
|
+
}
|
886
|
+
|
881
887
|
@media print {
|
882
888
|
body {
|
883
889
|
font-size: 18pt;
|
@@ -1038,6 +1044,15 @@ a.image {
|
|
1038
1044
|
border-bottom-right-radius: 0;
|
1039
1045
|
}
|
1040
1046
|
|
1047
|
+
/* http://nicolasgallagher.com/jump-links-and-viewport-positioning/ */
|
1048
|
+
.anchor_helper {
|
1049
|
+
position: relative;
|
1050
|
+
display: block;
|
1051
|
+
top: -50px;
|
1052
|
+
width: 1px;
|
1053
|
+
height: 1px;
|
1054
|
+
}
|
1055
|
+
|
1041
1056
|
</style>
|
1042
1057
|
</head>
|
1043
1058
|
<body class="article">
|
@@ -1048,7 +1063,7 @@ a.image {
|
|
1048
1063
|
<a href="javascript:void(0)" id="current_section"></a>
|
1049
1064
|
</div>
|
1050
1065
|
<div id="header">
|
1051
|
-
<h1>Phusion Passenger users guide, Nginx version</h1>
|
1066
|
+
<h1>Phusion Passenger users guide, Nginx version</h1>
|
1052
1067
|
<div id="preamble">
|
1053
1068
|
<div class="sectionbody">
|
1054
1069
|
<div class="paragraph"><p><span class="image">
|
@@ -1083,19 +1098,135 @@ How to solve common problems.
|
|
1083
1098
|
<div class="paragraph"><p>This guide assumes that the reader is somewhat familiar with Nginx and with
|
1084
1099
|
using the command line.</p></div>
|
1085
1100
|
</div>
|
1086
|
-
</div>
|
1101
|
+
</div>
|
1087
1102
|
<div id="toc">
|
1088
|
-
|
1089
|
-
|
1090
|
-
</div>
|
1103
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><div id="toctitle">Table of Contents</div>
|
1104
|
+
<div class="foo toclevel2"><a href="#_support_information">1. Support information</a></div>
|
1105
|
+
<div class="foo toclevel3"><a href="#_supported_operating_systems">1.1. Supported operating systems</a></div>
|
1106
|
+
<div class="foo toclevel3"><a href="#_where_to_get_support">1.2. Where to get support</a></div>
|
1107
|
+
<div class="foo toclevel2"><a href="#_installation">2. Installation</a></div>
|
1108
|
+
<div class="foo toclevel3"><a href="#rubygems_generic_install">2.1. Generic installation, upgrade and downgrade method: via RubyGems</a></div>
|
1109
|
+
<div class="foo toclevel3"><a href="#tarball_generic_install">2.2. Generic installation, upgrade and downgrade method: via tarball</a></div>
|
1110
|
+
<div class="foo toclevel3"><a href="#_installing_or_upgrading_on_ubuntu">2.3. Installing or upgrading on Ubuntu</a></div>
|
1111
|
+
<div class="foo toclevel3"><a href="#_installing_or_upgrading_on_red_hat_fedora_centos_or_scientificlinux">2.4. Installing or upgrading on Red Hat, Fedora, CentOS or ScientificLinux</a></div>
|
1112
|
+
<div class="foo toclevel3"><a href="#_upgrading_from_open_source_to_enterprise">2.5. Upgrading from open source to Enterprise</a></div>
|
1113
|
+
<div class="foo toclevel3"><a href="#_non_interactive_automatic_headless_installs_or_upgrades">2.6. Non-interactive, automatic, headless installs or upgrades</a></div>
|
1114
|
+
<div class="foo toclevel3"><a href="#_installing_as_a_normal_nginx_module_without_using_the_installer">2.7. Installing as a normal Nginx module without using the installer</a></div>
|
1115
|
+
<div class="foo toclevel3"><a href="#_disabling_without_uninstalling">2.8. Disabling without uninstalling</a></div>
|
1116
|
+
<div class="foo toclevel3"><a href="#uninstalling">2.9. Uninstalling</a></div>
|
1117
|
+
<div class="foo toclevel3"><a href="#moving_phusion_passenger">2.10. Moving to a different directory</a></div>
|
1118
|
+
<div class="foo toclevel2"><a href="#deploying_a_ror_app">3. Deploying a Ruby on Rails 1.x or 2.x (but NOT Rails >= 3) application</a></div>
|
1119
|
+
<div class="foo toclevel3"><a href="#_deploying_to_a_virtual_host_8217_s_root">3.1. Deploying to a virtual host’s root</a></div>
|
1120
|
+
<div class="foo toclevel3"><a href="#deploying_rails_to_sub_uri">3.2. Deploying to a sub URI</a></div>
|
1121
|
+
<div class="foo toclevel3"><a href="#_redeploying_restarting_the_ruby_on_rails_application">3.3. Redeploying (restarting the Ruby on Rails application)</a></div>
|
1122
|
+
<div class="foo toclevel3"><a href="#_migrations">3.4. Migrations</a></div>
|
1123
|
+
<div class="foo toclevel3"><a href="#_capistrano_integration">3.5. Capistrano integration</a></div>
|
1124
|
+
<div class="foo toclevel2"><a href="#deploying_a_rack_app">4. Deploying a Rack-based Ruby application (including Rails >= 3)</a></div>
|
1125
|
+
<div class="foo toclevel3"><a href="#_tutorial_example_writing_and_deploying_a_hello_world_rack_application">4.1. Tutorial/example: writing and deploying a Hello World Rack application</a></div>
|
1126
|
+
<div class="foo toclevel3"><a href="#_deploying_to_a_virtual_host_8217_s_root_2">4.2. Deploying to a virtual host’s root</a></div>
|
1127
|
+
<div class="foo toclevel3"><a href="#deploying_rack_to_sub_uri">4.3. Deploying to a sub URI</a></div>
|
1128
|
+
<div class="foo toclevel3"><a href="#_redeploying_restarting_the_rack_application">4.4. Redeploying (restarting the Rack application)</a></div>
|
1129
|
+
<div class="foo toclevel3"><a href="#_rackup_specifications_for_various_web_frameworks">4.5. Rackup specifications for various web frameworks</a></div>
|
1130
|
+
<div class="foo toclevel4"><a href="#_camping">4.5.1. Camping</a></div>
|
1131
|
+
<div class="foo toclevel4"><a href="#_halcyon">4.5.2. Halcyon</a></div>
|
1132
|
+
<div class="foo toclevel4"><a href="#_mack">4.5.3. Mack</a></div>
|
1133
|
+
<div class="foo toclevel4"><a href="#_merb">4.5.4. Merb</a></div>
|
1134
|
+
<div class="foo toclevel4"><a href="#_ramaze">4.5.5. Ramaze</a></div>
|
1135
|
+
<div class="foo toclevel4"><a href="#_sinatra">4.5.6. Sinatra</a></div>
|
1136
|
+
<div class="foo toclevel2"><a href="#_deploying_a_wsgi_python_application">5. Deploying a WSGI (Python) application</a></div>
|
1137
|
+
<div class="foo toclevel3"><a href="#_tutorial_example_writing_and_deploying_a_hello_world_wsgi_application">5.1. Tutorial/example: writing and deploying a Hello World WSGI application</a></div>
|
1138
|
+
<div class="foo toclevel3"><a href="#_deploying_to_a_virtual_host_8217_s_root_3">5.2. Deploying to a virtual host’s root</a></div>
|
1139
|
+
<div class="foo toclevel3"><a href="#_redeploying_restarting_the_wsgi_application">5.3. Redeploying (restarting the WSGI application)</a></div>
|
1140
|
+
<div class="foo toclevel2"><a href="#_configuring_phusion_passenger">6. Configuring Phusion Passenger</a></div>
|
1141
|
+
<div class="foo toclevel3"><a href="#_passenger_root_lt_directory_gt">6.1. passenger_root <directory></a></div>
|
1142
|
+
<div class="foo toclevel3"><a href="#_passenger_ruby_lt_filename_gt">6.2. passenger_ruby <filename></a></div>
|
1143
|
+
<div class="foo toclevel3"><a href="#PassengerSpawnMethod">6.3. passenger_spawn_method <string></a></div>
|
1144
|
+
<div class="foo toclevel3"><a href="#PassengerRollingRestarts">6.4. passenger_rolling_restarts <on|off></a></div>
|
1145
|
+
<div class="foo toclevel3"><a href="#_passenger_resist_deployment_errors_lt_on_off_gt">6.5. passenger_resist_deployment_errors <on|off></a></div>
|
1146
|
+
<div class="foo toclevel3"><a href="#_important_deployment_options">6.6. Important deployment options</a></div>
|
1147
|
+
<div class="foo toclevel4"><a href="#_passenger_enabled_lt_on_off_gt">6.6.1. passenger_enabled <on|off></a></div>
|
1148
|
+
<div class="foo toclevel4"><a href="#PassengerBaseURI">6.6.2. passenger_base_uri <uri></a></div>
|
1149
|
+
<div class="foo toclevel3"><a href="#_connection_handling_options">6.7. Connection handling options</a></div>
|
1150
|
+
<div class="foo toclevel4"><a href="#_passenger_ignore_client_abort_lt_on_off_gt">6.7.1. passenger_ignore_client_abort <on|off></a></div>
|
1151
|
+
<div class="foo toclevel4"><a href="#_passenger_set_cgi_param_lt_cgi_environment_name_gt_lt_value_gt">6.7.2. passenger_set_cgi_param <CGI environment name> <value></a></div>
|
1152
|
+
<div class="foo toclevel4"><a href="#_passenger_pass_header_lt_header_name_gt">6.7.3. passenger_pass_header <header name></a></div>
|
1153
|
+
<div class="foo toclevel4"><a href="#_passenger_buffer_response_lt_on_off_gt">6.7.4. passenger_buffer_response <on|off></a></div>
|
1154
|
+
<div class="foo toclevel4"><a href="#_passenger_buffer_size">6.7.5. passenger_buffer_size</a></div>
|
1155
|
+
<div class="foo toclevel4"><a href="#_passenger_buffers">6.7.6. passenger_buffers</a></div>
|
1156
|
+
<div class="foo toclevel4"><a href="#_passenger_busy_buffer_size">6.7.7. passenger_busy_buffer_size</a></div>
|
1157
|
+
<div class="foo toclevel3"><a href="#_security_options">6.8. Security options</a></div>
|
1158
|
+
<div class="foo toclevel4"><a href="#PassengerUserSwitching">6.8.1. passenger_user_switching <on|off></a></div>
|
1159
|
+
<div class="foo toclevel4"><a href="#_passenger_user_lt_username_gt">6.8.2. passenger_user <username></a></div>
|
1160
|
+
<div class="foo toclevel4"><a href="#_passenger_group_lt_group_name_gt">6.8.3. passenger_group <group name></a></div>
|
1161
|
+
<div class="foo toclevel4"><a href="#PassengerDefaultUser">6.8.4. passenger_default_user <username></a></div>
|
1162
|
+
<div class="foo toclevel4"><a href="#PassengerDefaultGroup">6.8.5. Passenger_default_group <group name></a></div>
|
1163
|
+
<div class="foo toclevel4"><a href="#_passenger_friendly_error_pages_lt_on_off_gt">6.8.6. passenger_friendly_error_pages <on|off></a></div>
|
1164
|
+
<div class="foo toclevel3"><a href="#_resource_control_and_optimization_options">6.9. Resource control and optimization options</a></div>
|
1165
|
+
<div class="foo toclevel4"><a href="#PassengerMaxPoolSize">6.9.1. passenger_max_pool_size <integer></a></div>
|
1166
|
+
<div class="foo toclevel4"><a href="#PassengerMinInstances">6.9.2. passenger_min_instances <integer></a></div>
|
1167
|
+
<div class="foo toclevel4"><a href="#_passenger_max_instances_lt_integer_gt">6.9.3. passenger_max_instances <integer></a></div>
|
1168
|
+
<div class="foo toclevel4"><a href="#_passenger_max_instances_per_app_lt_integer_gt">6.9.4. passenger_max_instances_per_app <integer></a></div>
|
1169
|
+
<div class="foo toclevel4"><a href="#PassengerPoolIdleTime">6.9.5. passenger_pool_idle_time <integer></a></div>
|
1170
|
+
<div class="foo toclevel4"><a href="#_passenger_max_preloader_idle_time_lt_integer_gt">6.9.6. passenger_max_preloader_idle_time <integer></a></div>
|
1171
|
+
<div class="foo toclevel4"><a href="#PassengerConcurrencyModel">6.9.7. passenger_concurrency_model <process|thread></a></div>
|
1172
|
+
<div class="foo toclevel4"><a href="#PassengerThreadCount">6.9.8. passenger_thread_count <number></a></div>
|
1173
|
+
<div class="foo toclevel4"><a href="#PassengerMaxRequests">6.9.9. passenger_max_requests <integer></a></div>
|
1174
|
+
<div class="foo toclevel4"><a href="#PassengerMaxRequestTime">6.9.10. passenger_max_request_time <seconds></a></div>
|
1175
|
+
<div class="foo toclevel4"><a href="#PassengerMemoryLimit">6.9.11. passenger_memory_limit <integer></a></div>
|
1176
|
+
<div class="foo toclevel4"><a href="#PassengerPreStart">6.9.12. passenger_pre_start <url></a></div>
|
1177
|
+
<div class="foo toclevel3"><a href="#_logging_and_debugging_options">6.10. Logging and debugging options</a></div>
|
1178
|
+
<div class="foo toclevel4"><a href="#_passenger_log_level_lt_integer_gt">6.10.1. passenger_log_level <integer></a></div>
|
1179
|
+
<div class="foo toclevel4"><a href="#_passenger_debug_log_file_lt_filename_gt">6.10.2. passenger_debug_log_file <filename></a></div>
|
1180
|
+
<div class="foo toclevel4"><a href="#_passenger_debugger_lt_on_off_gt">6.10.3. passenger_debugger <on|off></a></div>
|
1181
|
+
<div class="foo toclevel3"><a href="#_ruby_on_rails_specific_options">6.11. Ruby on Rails-specific options</a></div>
|
1182
|
+
<div class="foo toclevel4"><a href="#RailsEnv">6.11.1. rails_env <string></a></div>
|
1183
|
+
<div class="foo toclevel3"><a href="#_rack_and_rails_gt_3_specific_options">6.12. Rack and Rails >= 3 specific options</a></div>
|
1184
|
+
<div class="foo toclevel4"><a href="#RackEnv">6.12.1. rack_env <string></a></div>
|
1185
|
+
<div class="foo toclevel3"><a href="#_deprecated_options">6.13. Deprecated options</a></div>
|
1186
|
+
<div class="foo toclevel4"><a href="#_rails_spawn_method">6.13.1. rails_spawn_method</a></div>
|
1187
|
+
<div class="foo toclevel2"><a href="#_analysis_and_system_maintenance">7. Analysis and system maintenance</a></div>
|
1188
|
+
<div class="foo toclevel3"><a href="#_inspecting_memory_usage">7.1. Inspecting memory usage</a></div>
|
1189
|
+
<div class="foo toclevel3"><a href="#_inspecting_phusion_passenger_8217_s_internal_status">7.2. Inspecting Phusion Passenger’s internal status</a></div>
|
1190
|
+
<div class="foo toclevel3"><a href="#debugging_frozen">7.3. Debugging frozen applications</a></div>
|
1191
|
+
<div class="foo toclevel3"><a href="#_accessing_individual_application_processes">7.4. Accessing individual application processes</a></div>
|
1192
|
+
<div class="foo toclevel3"><a href="#_attaching_an_irb_console_to_an_application_process">7.5. Attaching an IRB console to an application process</a></div>
|
1193
|
+
<div class="foo toclevel2"><a href="#_tips">8. Tips</a></div>
|
1194
|
+
<div class="foo toclevel3"><a href="#user_switching">8.1. User switching (security)</a></div>
|
1195
|
+
<div class="foo toclevel3"><a href="#reducing_memory_usage">8.2. Reducing memory consumption of Ruby on Rails applications by 33%</a></div>
|
1196
|
+
<div class="foo toclevel3"><a href="#capistrano">8.3. Capistrano recipe</a></div>
|
1197
|
+
<div class="foo toclevel3"><a href="#bundler_support">8.4. Bundler support</a></div>
|
1198
|
+
<div class="foo toclevel3"><a href="#moving_phusion_passenger">8.5. Moving Phusion Passenger to a different directory</a></div>
|
1199
|
+
<div class="foo toclevel3"><a href="#_installing_multiple_ruby_on_rails_versions">8.6. Installing multiple Ruby on Rails versions</a></div>
|
1200
|
+
<div class="foo toclevel3"><a href="#_making_the_application_restart_after_each_request">8.7. Making the application restart after each request</a></div>
|
1201
|
+
<div class="foo toclevel3"><a href="#sub_uri_deployment_uri_fix">8.8. How to fix broken images/CSS/JavaScript URIs in sub-URI deployments</a></div>
|
1202
|
+
<div class="foo toclevel3"><a href="#_out_of_band_garbage_work_and_out_of_band_garbage_collection">8.9. Out-of-Band Garbage Work and Out-of-Band Garbage Collection</a></div>
|
1203
|
+
<div class="foo toclevel2"><a href="#_under_the_hood">9. Under the hood</a></div>
|
1204
|
+
<div class="foo toclevel3"><a href="#_page_caching_support">9.1. Page caching support</a></div>
|
1205
|
+
<div class="foo toclevel3"><a href="#application_detection">9.2. How Phusion Passenger detects whether a virtual host is a web application</a></div>
|
1206
|
+
<div class="foo toclevel2"><a href="#_appendix_a_about_this_document">10. Appendix A: About this document</a></div>
|
1207
|
+
<div class="foo toclevel2"><a href="#_appendix_b_terminology">11. Appendix B: Terminology</a></div>
|
1208
|
+
<div class="foo toclevel3"><a href="#application_root">11.1. Application root</a></div>
|
1209
|
+
<div class="foo toclevel3"><a href="#idle_process">11.2. Idle process</a></div>
|
1210
|
+
<div class="foo toclevel3"><a href="#inactive_process">11.3. Inactive process</a></div>
|
1211
|
+
<div class="foo toclevel2"><a href="#spawning_methods_explained">12. Appendix C: Spawning methods explained</a></div>
|
1212
|
+
<div class="foo toclevel3"><a href="#_the_most_straightforward_and_traditional_way_direct_spawning">12.1. The most straightforward and traditional way: direct spawning</a></div>
|
1213
|
+
<div class="foo toclevel3"><a href="#_the_smart_spawning_method">12.2. The smart spawning method</a></div>
|
1214
|
+
<div class="foo toclevel4"><a href="#_how_it_works">12.2.1. How it works</a></div>
|
1215
|
+
<div class="foo toclevel4"><a href="#_summary_of_benefits">12.2.2. Summary of benefits</a></div>
|
1216
|
+
<div class="foo toclevel3"><a href="#_smart_spawning_gotcha_1_unintentional_file_descriptor_sharing">12.3. Smart spawning gotcha #1: unintentional file descriptor sharing</a></div>
|
1217
|
+
<div class="foo toclevel4"><a href="#_example_1_memcached_connection_sharing_harmful">12.3.1. Example 1: Memcached connection sharing (harmful)</a></div>
|
1218
|
+
<div class="foo toclevel4"><a href="#_example_2_log_file_sharing_not_harmful">12.3.2. Example 2: Log file sharing (not harmful)</a></div>
|
1219
|
+
<div class="foo toclevel3"><a href="#_smart_spawning_gotcha_2_the_need_to_revive_threads">12.4. Smart spawning gotcha #2: the need to revive threads</a></div>
|
1220
|
+
<div class="foo toclevel3"><a href="#_smart_spawning_gotcha_3_code_load_order">12.5. Smart spawning gotcha #3: code load order</a></div>
|
1221
|
+
</div>
|
1091
1222
|
</div>
|
1092
1223
|
<div id="content">
|
1093
1224
|
|
1094
1225
|
<div class="sect1">
|
1095
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1226
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_support_information"></span><h2 data-comment-topic="support-information-nl5gdn" data-anchor="_support_information">1. Support information</h2>
|
1096
1227
|
<div class="sectionbody">
|
1097
1228
|
<div class="sect2">
|
1098
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1229
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_supported_operating_systems"></span><h3 data-comment-topic="supported-operating-systems-a5n2x4" data-anchor="_supported_operating_systems">1.1. Supported operating systems</h3>
|
1099
1230
|
<div class="paragraph"><p>Phusion Passenger works on any POSIX-compliant operating system. In other
|
1100
1231
|
words: practically any operating system on earth, except Microsoft Windows.</p></div>
|
1101
1232
|
<div class="paragraph"><p>Phusion Passenger is confirmed on a large number of operating systems and Linux
|
@@ -1108,7 +1239,7 @@ or
|
|
1108
1239
|
if it doesn’t work on your POSIX-compliant operating system.</p></div>
|
1109
1240
|
</div>
|
1110
1241
|
<div class="sect2">
|
1111
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1242
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_where_to_get_support"></span><h3 data-comment-topic="where-to-get-support-2s9na5" data-anchor="_where_to_get_support">1.2. Where to get support</h3>
|
1112
1243
|
<div class="ulist"><ul>
|
1113
1244
|
<li>
|
1114
1245
|
<p>
|
@@ -1119,7 +1250,12 @@ if it doesn’t work on your POSIX-compliant operating system.</p></div>
|
|
1119
1250
|
<li>
|
1120
1251
|
<p>
|
1121
1252
|
<a href="http://groups.google.com/group/phusion-passenger">Discussion forum</a> - post a
|
1122
|
-
message here if you’re experiencing problems.
|
1253
|
+
message here if you’re experiencing problems. Support on this forum is provided by the community on a best-effort basis, so a (timely) response is not guaranteed.
|
1254
|
+
</p>
|
1255
|
+
</li>
|
1256
|
+
<li>
|
1257
|
+
<p>
|
1258
|
+
Email <a href="mailto:support@phusion.nl">support@phusion.nl</a> if you are a <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a> customer. Please mention your order reference. If you are not an Enterprise customer, we kindly redirect you to the community discussion forum instead.
|
1123
1259
|
</p>
|
1124
1260
|
</li>
|
1125
1261
|
<li>
|
@@ -1133,144 +1269,372 @@ if it doesn’t work on your POSIX-compliant operating system.</p></div>
|
|
1133
1269
|
</div>
|
1134
1270
|
</div>
|
1135
1271
|
<div class="sect1">
|
1136
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1272
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_installation"></span><h2 data-comment-topic="installing-phusion-passenger-hn03ac" data-anchor="_installation">2. Installation</h2>
|
1137
1273
|
<div class="sectionbody">
|
1138
|
-
<div class="
|
1139
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><h3 id="_overview" data-comment-topic="overview-kvhzi4">2.1. Overview</h3>
|
1140
|
-
<div class="paragraph"><p>As you might already know, Nginx does not support loadable modules, in contrast
|
1141
|
-
to most other web servers (e.g. Apache). Therefore, to install Phusion Passenger
|
1142
|
-
for Nginx, one must recompile and reinstall Nginx with Phusion Passenger support.
|
1143
|
-
There are two ways to do this:</p></div>
|
1274
|
+
<div class="paragraph"><p>The Phusion Passenger installation process consists of two steps:</p></div>
|
1144
1275
|
<div class="olist arabic"><ol class="arabic">
|
1145
1276
|
<li>
|
1146
1277
|
<p>
|
1147
|
-
|
1148
|
-
guide you through the entire installation process, including downloading,
|
1149
|
-
compiling and installing Nginx. You should be able to get Nginx with Phusion
|
1150
|
-
Passenger support up-and-running in a matter of minutes. This is the
|
1151
|
-
recommended installation method.
|
1278
|
+
The <strong>obtainment step</strong>, where you download the Phusion Passenger files puts them somewhere on your system. This can be done through downloading the source tarball, installing the Ruby gem or installing a native OS package via APT or YUM.
|
1152
1279
|
</p>
|
1153
1280
|
</li>
|
1154
1281
|
<li>
|
1155
1282
|
<p>
|
1156
|
-
|
1157
|
-
through Nginx’s <span class="monospaced">--add-module</span> configure option. Generally, using our
|
1158
|
-
installer is easier, so you should only use this method if you’re already
|
1159
|
-
familiar with compiling Nginx.
|
1283
|
+
The <strong>integration step</strong>, where you configure Phusion Passenger so that it works properly with other system components such as Apache, Nginx, Ruby, Python, etc.
|
1160
1284
|
</p>
|
1161
1285
|
</li>
|
1162
1286
|
</ol></div>
|
1163
|
-
<div class="
|
1164
|
-
<
|
1165
|
-
<
|
1166
|
-
<
|
1167
|
-
</
|
1168
|
-
<
|
1169
|
-
as
|
1170
|
-
|
1171
|
-
|
1287
|
+
<div class="paragraph"><p>Because Phusion Passenger is designed to run in a wide variety of operating systems and configurations, both steps can be done in multiple ways. Most users will be satisfied with the generic installation instructions which covers both steps, but some users may prefer OS-specific installation instructions in order to integrate better.</p></div>
|
1288
|
+
<div class="paragraph"><p>If you are not familiar with system administration and do not understand all the choices, then we recommend you to go with the <a href="#rubygems_generic_install">RubyGems generic installation method</a> (if you’re a Ruby user) or the <a href="#tarball_generic_install">tarball generic installation method</a> (if you’re not a Ruby user).</p></div>
|
1289
|
+
<div class="paragraph"><p>The steps for upgrading or downgrading Phusion Passenger is almost the same as the steps for installing. All the installation guides in this section will also teach you how to upgrade and downgrade.</p></div>
|
1290
|
+
<div class="sect2">
|
1291
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="rubygems_generic_install"></span><h3 data-comment-topic="generic-installation-upgrade-and-downgrade-method-via-rubygems-76uol7" data-anchor="rubygems_generic_install">2.1. Generic installation, upgrade and downgrade method: via RubyGems</h3>
|
1292
|
+
<span class="anchor_helper" id="is_ruby_home_or_system_wide_installed"></span><h4 class="float" data-anchor="is_ruby_home_or_system_wide_installed">Step 1: figuring out whether your Ruby is installed the home directory or system-wide</h4>
|
1293
|
+
<div class="paragraph"><p>Ruby may either be installed in the home directory, or system-wide. If it’s installed system-wide then we will want to install gems system-wide as well, so you need to switch to a root prompt first. If Ruby is installed in the home directory then we will want to install gems to the home directory as well, as a normal user.</p></div>
|
1294
|
+
<div class="paragraph"><p>To find out which case applies, run the following command to find out where the <span class="monospaced">ruby</span> command is:</p></div>
|
1295
|
+
<div class="listingblock">
|
1296
|
+
<div class="content monospaced">
|
1297
|
+
<pre>which ruby</pre>
|
1298
|
+
</div>
|
1299
|
+
</div>
|
1300
|
+
<div class="paragraph"><p>Do you see a filename that references <em>/home</em> or <em>/Users</em>? If so then your Ruby interpreter is installed in your home directory and you can proceed to step 2. Otherwise, you need to switch to a root prompt by running one of the following commands:</p></div>
|
1301
|
+
<div class="ulist"><ul>
|
1302
|
+
<li>
|
1303
|
+
<p>
|
1304
|
+
Are you using RVM? Run <span class="monospaced">rvmsudo -s</span>
|
1305
|
+
</p>
|
1306
|
+
</li>
|
1307
|
+
<li>
|
1308
|
+
<p>
|
1309
|
+
Are you not using RVM, or do you not know what RVM is? Run <span class="monospaced">sudo -s</span>
|
1310
|
+
</p>
|
1311
|
+
</li>
|
1312
|
+
<li>
|
1313
|
+
<p>
|
1314
|
+
Is <em>sudo</em> not installed on your system? Run <span class="monospaced">su -c bash</span>
|
1315
|
+
</p>
|
1316
|
+
</li>
|
1317
|
+
</ul></div>
|
1318
|
+
<div class="paragraph"><p>You must maintain this root prompt throughout this installation guide.</p></div>
|
1319
|
+
<span class="anchor_helper" id="_step_2_install_the_gem"></span><h4 class="float" data-anchor="_step_2_install_the_gem">Step 2: install the gem</h4>
|
1320
|
+
<div class="paragraph">
|
1321
|
+
<div class="title">Open Source</div>
|
1322
|
+
<p>Install the latest gem to obtain the files for the latest stable version of the open source Phusion Passenger:</p>
|
1172
1323
|
</div>
|
1324
|
+
<div class="listingblock">
|
1325
|
+
<div class="content monospaced">
|
1326
|
+
<pre>gem install passenger</pre>
|
1327
|
+
</div>
|
1173
1328
|
</div>
|
1174
|
-
<div class="
|
1175
|
-
<
|
1176
|
-
<div class="
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
<
|
1184
|
-
|
1185
|
-
|
1329
|
+
<div class="paragraph"><p>Sometimes you will want to obtain the latest beta version of Phusion Passenger. Beta versions are not normally selected by <span class="monospaced">gem install</span>, so to opt-in for beta versions you have to add the <span class="monospaced">--pre</span> argument:</p></div>
|
1330
|
+
<div class="listingblock">
|
1331
|
+
<div class="content monospaced">
|
1332
|
+
<pre>gem install passenger --pre</pre>
|
1333
|
+
</div>
|
1334
|
+
</div>
|
1335
|
+
<div class="paragraph"><p>If you want to obtain a specific version of Phusion Passenger, e.g. because you are downgrading, then specify the version number with <span class="monospaced">--version</span>:</p></div>
|
1336
|
+
<div class="listingblock">
|
1337
|
+
<div class="content monospaced">
|
1338
|
+
<pre>gem install passenger --version 3.0.0</pre>
|
1339
|
+
</div>
|
1340
|
+
</div>
|
1341
|
+
<div class="paragraph"><p>If you want to obtain a specific <strong>beta</strong> version of Phusion Passenger then you must also pass <span class="monospaced">--pre</span>:</p></div>
|
1342
|
+
<div class="listingblock">
|
1343
|
+
<div class="content monospaced">
|
1344
|
+
<pre>gem install passenger --version 3.9.1.beta --pre</pre>
|
1345
|
+
</div>
|
1346
|
+
</div>
|
1347
|
+
<div class="paragraph">
|
1348
|
+
<div class="title">Enterprise</div>
|
1349
|
+
<p>The <span class="monospaced">gem install</span> command only installs the open source version of Phusion Passenger. <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a> customers should obtain the gem from the <a href="https://www.phusionpassenger.com/orders">Customer Area</a> instead. Login with your order reference and password. The Customer Area will show you a list of files.</p>
|
1350
|
+
</div>
|
1351
|
+
<div class="paragraph"><p>First, download the <strong>license key</strong> and save it as <em>/etc/passenger-enterprise-license</em>.</p></div>
|
1352
|
+
<div class="paragraph"><p>Next, download the <strong>gem file</strong> for the version you want (<span class="monospaced">passenger-enterprise-server-x.x.x.gem</span>) and install it with:</p></div>
|
1353
|
+
<div class="listingblock">
|
1354
|
+
<div class="content monospaced">
|
1355
|
+
<pre>gem install passenger-enterprise-server-x.x.x.gem</pre>
|
1356
|
+
</div>
|
1357
|
+
</div>
|
1358
|
+
<span class="anchor_helper" id="add_rubygems_bin_dir_to_path"></span><h4 class="float" data-anchor="add_rubygems_bin_dir_to_path">Step 3: add the RubyGems bin directory to your $PATH</h4>
|
1359
|
+
<div class="paragraph"><p>If you all the following are applicable to you:</p></div>
|
1186
1360
|
<div class="ulist"><ul>
|
1187
1361
|
<li>
|
1188
1362
|
<p>
|
1189
|
-
|
1363
|
+
You are on Debian or Ubuntu,
|
1364
|
+
</p>
|
1365
|
+
</li>
|
1366
|
+
<li>
|
1367
|
+
<p>
|
1368
|
+
and you installed RubyGems through APT,
|
1190
1369
|
</p>
|
1191
1370
|
</li>
|
1192
1371
|
<li>
|
1193
1372
|
<p>
|
1194
|
-
|
1373
|
+
and your Ruby interpreter is installed system-wide,
|
1195
1374
|
</p>
|
1196
1375
|
</li>
|
1197
1376
|
</ul></div>
|
1198
|
-
<div class="paragraph"><p
|
1377
|
+
<div class="paragraph"><p>…then you must ensure that the RubyGems bin directory is in your $PATH, which is the environment variable that dictates where your command prompt will look for commands. If any of the above conditions do not apply to you, then you can skip this step.</p></div>
|
1378
|
+
<div class="paragraph"><p>Open <em>/etc/bash.bashrc</em> or <em>/etc/bashrc</em> (whichever is available) and add the following to the end of the file. Also run this command in your terminal.</p></div>
|
1199
1379
|
<div class="listingblock">
|
1200
1380
|
<div class="content monospaced">
|
1201
|
-
<pre>export PATH
|
1381
|
+
<pre>export PATH=$PATH:/var/lib/gems/1.8/bin:/var/lib/gems/1.9/bin</pre>
|
1202
1382
|
</div>
|
1203
1383
|
</div>
|
1384
|
+
<span class="anchor_helper" id="_step_4_loosen_permissions"></span><h4 class="float" data-anchor="_step_4_loosen_permissions">Step 4: loosen permissions</h4>
|
1385
|
+
<div class="paragraph"><p>If in step 1 you determined that your Ruby interpreter is installed in your home directory, then you need to make sure that the Phusion Passenger gem directory is accessible by your web server. To do that, you must ensure that the Phusion Passenger gem directory, as well as all parent directories, have the world-executable permission.</p></div>
|
1386
|
+
<div class="paragraph"><p>To find out where the Phusion Passenger gem directory is, run:</p></div>
|
1387
|
+
<div class="listingblock">
|
1388
|
+
<div class="content monospaced">
|
1389
|
+
<pre>passenger-config --root</pre>
|
1390
|
+
</div>
|
1204
1391
|
</div>
|
1205
|
-
<div class="
|
1206
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><h3 id="_installing_phusion_passenger_for_nginx_through_the_installer" data-comment-topic="installing-phusion-passenger-for-nginx-through-the-installer-1lqxes1">2.3. Installing Phusion Passenger for Nginx through the installer</h3>
|
1207
|
-
<div class="sect3">
|
1208
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><h4 id="_obtaining_the_phusion_passenger_files_and_running_the_installer" data-comment-topic="obtaining-the-phusion-passenger-files-and-running-the-installer-6l6ula">2.3.1. Obtaining the Phusion Passenger files and running the installer</h4>
|
1209
|
-
<div class="paragraph"><p>You must obtain the Phusion Passenger files in order to run the installer.
|
1210
|
-
This can be done either by installing the Phusion Passenger gem, or by
|
1211
|
-
downloading the source tarball.</p></div>
|
1212
|
-
<div class="sect4">
|
1213
|
-
<h5 id="_gem">Gem</h5>
|
1214
|
-
<div class="paragraph"><p>First, install the Phusion Passenger gem by running:</p></div>
|
1392
|
+
<div class="paragraph"><p>Suppose that the above command outputs <em>/home/phusion/.rvm/gems/ruby-1.9.3-p362/gems/passenger-x.x.x</em>. Then you <span class="monospaced">chmod o+x</span> the directory itself and all parent directories up until <em>/home/phusion</em>:</p></div>
|
1215
1393
|
<div class="listingblock">
|
1216
1394
|
<div class="content monospaced">
|
1217
|
-
<pre>
|
1395
|
+
<pre>chmod o+x /home/phusion/.rvm/gems/ruby-1.9.3-p362/gems/passenger-x.x.x
|
1396
|
+
chmod o+x /home/phusion/.rvm/gems/ruby-1.9.3-p362/gems
|
1397
|
+
chmod o+x /home/phusion/.rvm/gems/ruby-1.9.3-p362
|
1398
|
+
chmod o+x /home/phusion/.rvm/gems
|
1399
|
+
chmod o+x /home/phusion/.rvm
|
1400
|
+
chmod o+x /home/phusion</pre>
|
1218
1401
|
</div>
|
1219
1402
|
</div>
|
1220
|
-
<
|
1403
|
+
<span class="anchor_helper" id="run_passenger_installer"></span><h4 class="float" data-anchor="run_passenger_installer">Step 5: run the Phusion Passenger installer</h4>
|
1404
|
+
<div class="paragraph"><p>Nginx is a different from other web servers in that it does not support loadable modules. The only way to extend Nginx is to recompile it entirely from source. That’s what we will do in this step. The good news is that Phusion Passenger provides a tool to make this easy for you.</p></div>
|
1405
|
+
<div class="paragraph"><p>If you’ve already installed Nginx before, but without Phusion Passenger support, then you <strong>should</strong> uninstall it first. You don’t have to, because you can also install another Nginx with Phusion Passenger support, in parallel to the existing Nginx. We merely recommend uninstalling the existing in order to avoid user confusion, but the choice is yours.</p></div>
|
1406
|
+
<div class="paragraph"><p>If you had previously installed Nginx with Phusion Passenger support, and you are upgrading, then you don’t have to uninstall your existing Nginx first. Instead we’ll overwrite it this step.</p></div>
|
1407
|
+
<div class="paragraph"><p>Here’s how you can uninstall the original Nginx:</p></div>
|
1408
|
+
<div class="ulist"><ul>
|
1409
|
+
<li>
|
1410
|
+
<p>
|
1411
|
+
If you installed the existing Nginx through APT, run: <span class="monospaced">sudo apt-get remove nginx nginx-full nginx-light nginx-naxsi nginx-common</span>
|
1412
|
+
</p>
|
1413
|
+
</li>
|
1414
|
+
<li>
|
1415
|
+
<p>
|
1416
|
+
If you installed the existing Nginx through YUM, run <span class="monospaced">yum remove nginx</span> as root.
|
1417
|
+
</p>
|
1418
|
+
</li>
|
1419
|
+
</ul></div>
|
1420
|
+
<div class="paragraph"><p>To proceed with installing or upgrading Phusion Passenger, run the Phusion Passenger Nginx installer and follow the on-screen instructions:</p></div>
|
1221
1421
|
<div class="listingblock">
|
1222
1422
|
<div class="content monospaced">
|
1223
1423
|
<pre>passenger-install-nginx-module</pre>
|
1224
1424
|
</div>
|
1225
1425
|
</div>
|
1226
|
-
<div class="paragraph"><p>
|
1426
|
+
<div class="paragraph"><p>At some point it will ask you which prefix to install Nginx to. If you’re upgrading, then specify the same prefix that you used last time.</p></div>
|
1427
|
+
<span class="anchor_helper" id="verify_passenger_running"></span><h4 class="float" data-anchor="verify_passenger_running">Step 6: Verifying that Phusion Passenger is running</h4>
|
1428
|
+
<div class="paragraph"><p>Restart your web server and run:</p></div>
|
1429
|
+
<div class="listingblock">
|
1430
|
+
<div class="content monospaced">
|
1431
|
+
<pre>passenger-memory-stats</pre>
|
1432
|
+
</div>
|
1227
1433
|
</div>
|
1228
|
-
<div class="
|
1229
|
-
<
|
1230
|
-
|
1231
|
-
<
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1434
|
+
<div class="paragraph"><p>You should see the web server processes as well as a number of Phusion Passenger processes (e.g. PassengerWatchdog, PassengerHelperAgent). Congratulations, Phusion Passenger is now installed and running!</p></div>
|
1435
|
+
<div class="paragraph"><p>If the output is not as expected, then please refer to the <a href="#troubleshooting">Troubleshooting</a> section.</p></div>
|
1436
|
+
</div>
|
1437
|
+
<div class="sect2">
|
1438
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="tarball_generic_install"></span><h3 data-comment-topic="generic-installation-upgrade-and-downgrade-method-via-tarball-2gkx43" data-anchor="tarball_generic_install">2.2. Generic installation, upgrade and downgrade method: via tarball</h3>
|
1439
|
+
<span class="anchor_helper" id="_step_1_download_and_extract_the_tarball"></span><h4 class="float" data-anchor="_step_1_download_and_extract_the_tarball">Step 1: download and extract the tarball</h4>
|
1440
|
+
<div class="paragraph"><p>Download the open source Phusion Passenger tarball from <a href="https://www.phusionpassenger.com/download#open_source">the Phusion Passenger website</a>. If you want a specific version, please refer to the release archive on <a href="http://rubyforge.org/frs/?group_id=5873&release_id=46919">RubyForge</a>.</p></div>
|
1441
|
+
<div class="paragraph"><p>If you a <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a> customer, download the Phusion Passenger Enterprise tarball from the <a href="https://www.phusionpassenger.com/orders">Customer Area</a>. Also be sure to download the <strong>license key</strong> and save it as <em>/etc/passenger-enterprise-license</em>.</p></div>
|
1442
|
+
<div class="paragraph"><p>Once you have downloaded the tarball, pick a location to extract it to. You can pick any location. A good location is <em>/opt/passenger</em>. Let’s call this location <span class="monospaced">$PREFIX</span>. Create this directory and extract the tarball as follows:</p></div>
|
1235
1443
|
<div class="listingblock">
|
1236
1444
|
<div class="content monospaced">
|
1237
|
-
<pre>
|
1238
|
-
|
1445
|
+
<pre>mkdir $PREFIX
|
1446
|
+
cd $PREFIX
|
1447
|
+
tar xzvf /location-to/passenger-x.x.x.tar.gz
|
1448
|
+
cd $PREFIX/passenger-x.x.x</pre>
|
1239
1449
|
</div>
|
1240
1450
|
</div>
|
1241
|
-
<div class="paragraph"><p>
|
1451
|
+
<div class="paragraph"><p>Note that <span class="monospaced">passenger-x.x.x</span> should be <span class="monospaced">passenger-enterprise-server-x.x.x</span> if you’re using Phusion Passenger Enterprise.</p></div>
|
1452
|
+
<span class="anchor_helper" id="_step_2_loosen_permissions"></span><h4 class="float" data-anchor="_step_2_loosen_permissions">Step 2: loosen permissions</h4>
|
1453
|
+
<div class="paragraph"><p>The Phusion Passenger directory must be accessible by the web server and by any web apps you want to run. To do that, you must ensure that the Phusion Passenger gem directory, as well as all parent directories, have the world-executable permission.</p></div>
|
1454
|
+
<div class="paragraph"><p>Suppose that the Phusion Passenger directory is <em>/opt/passenger/passenger-4.0.0</em>. Run <span class="monospaced">chmod o+x</span> on the directory itself and all parent directories.</p></div>
|
1242
1455
|
<div class="listingblock">
|
1243
1456
|
<div class="content monospaced">
|
1244
|
-
<pre
|
1457
|
+
<pre>chmod o+x /opt/passenger/passenger-4.0.0
|
1458
|
+
chmod o+x /opt/passenger
|
1459
|
+
chmod o+x /opt</pre>
|
1245
1460
|
</div>
|
1246
1461
|
</div>
|
1247
|
-
<
|
1248
|
-
<div class="
|
1249
|
-
<
|
1250
|
-
<
|
1251
|
-
<
|
1252
|
-
</
|
1253
|
-
<
|
1254
|
-
Furthermore, the passenger-x.x.x folder must be accessible by Nginx.</td>
|
1255
|
-
</tr></table>
|
1462
|
+
<span class="anchor_helper" id="_step_3_installing_ruby_and_rake"></span><h4 class="float" data-anchor="_step_3_installing_ruby_and_rake">Step 3: installing Ruby and Rake</h4>
|
1463
|
+
<div class="paragraph"><p>Phusion Passenger supports multiple languages and its core is written in C++, but its installer and administration tools are written in Ruby, so you must install that.</p></div>
|
1464
|
+
<div class="paragraph"><p>Even though Ruby is required, Ruby will not be loaded during normal operation unless you deploy a Ruby web application on Phusion Passenger.</p></div>
|
1465
|
+
<div class="paragraph"><p>Run <span class="monospaced">ruby --version</span> and <span class="monospaced">rake --version</span> to find out whether both commands are already installed and recent enough. Phusion Passenger requires Ruby >= 1.8.6. Any Rake version will do.</p></div>
|
1466
|
+
<div class="paragraph">
|
1467
|
+
<div class="title">Debian 6</div>
|
1468
|
+
<p>We recommend you to use <a href="http://wiki.brightbox.co.uk/docs:phusion-passenger">the Brightbox Ruby packages</a>. They provide more up-to-date versions of Ruby than Debian’s official repositories provide. Their Ubuntu Lucid repository is compatible with Debian 6. If you do not want to use the Brightbox repository, then follow the instructions for Debian 5.</p>
|
1256
1469
|
</div>
|
1470
|
+
<div class="paragraph"><p>Create <em>/etc/apt/sources.list.d/brightbox-source.list</em>:</p></div>
|
1471
|
+
<div class="listingblock">
|
1472
|
+
<div class="content monospaced">
|
1473
|
+
<pre>deb http://ppa.launchpad.net/brightbox/ruby-ng/ubuntu lucid main</pre>
|
1474
|
+
</div>
|
1257
1475
|
</div>
|
1476
|
+
<div class="paragraph"><p>Install the Brightbox APT public key:</p></div>
|
1477
|
+
<div class="listingblock">
|
1478
|
+
<div class="content monospaced">
|
1479
|
+
<pre>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C3173AA6</pre>
|
1480
|
+
</div>
|
1258
1481
|
</div>
|
1259
|
-
<div class="
|
1260
|
-
<
|
1261
|
-
<div class="
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1482
|
+
<div class="paragraph"><p>Then install Ruby and Rake:</p></div>
|
1483
|
+
<div class="listingblock">
|
1484
|
+
<div class="content monospaced">
|
1485
|
+
<pre>sudo apt-get update
|
1486
|
+
sudo apt-get install ruby1.9.3
|
1487
|
+
sudo gem install rake</pre>
|
1488
|
+
</div>
|
1489
|
+
</div>
|
1490
|
+
<div class="paragraph">
|
1491
|
+
<div class="title">Debian 5</div>
|
1492
|
+
<p>Run:</p>
|
1266
1493
|
</div>
|
1494
|
+
<div class="listingblock">
|
1495
|
+
<div class="content monospaced">
|
1496
|
+
<pre>sudo apt-get update
|
1497
|
+
sudo apt-get install ruby rake</pre>
|
1498
|
+
</div>
|
1499
|
+
</div>
|
1500
|
+
<div class="paragraph"><p>Then <a href="#add_rubygems_bin_dir_to_path">add the RubyGems bin directory to your $PATH</a>.</p></div>
|
1501
|
+
<div class="paragraph">
|
1502
|
+
<div class="title">Ubuntu</div>
|
1503
|
+
<p>We recommend you to use <a href="http://wiki.brightbox.co.uk/docs:phusion-passenger">the Brightbox Ruby packages</a>. They provide more up-to-date versions of Ruby than Ubuntu’s official repositories provide.</p>
|
1504
|
+
</div>
|
1505
|
+
<div class="listingblock">
|
1506
|
+
<div class="content monospaced">
|
1507
|
+
<pre>sudo apt-add-repository ppa:brightbox/passenger
|
1508
|
+
sudo apt-get update</pre>
|
1509
|
+
</div>
|
1510
|
+
</div>
|
1511
|
+
<div class="paragraph"><p>If you’re on the older Ubuntu 8.04 Hardy release, the <em>apt-add-repository</em> command isn’t available so you have to install the repository and the key by hand:</p></div>
|
1512
|
+
<div class="listingblock">
|
1513
|
+
<div class="content monospaced">
|
1514
|
+
<pre>sudo sh -c 'echo "deb http://ppa.launchpad.net/brightbox/passenger/ubuntu hardy main" > /etc/apt/sources.list.d/brightbox-passenger.list'
|
1515
|
+
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C3173AA6
|
1516
|
+
sudo apt-get update</pre>
|
1517
|
+
</div>
|
1518
|
+
</div>
|
1519
|
+
<div class="paragraph">
|
1520
|
+
<div class="title">Other operating systems</div>
|
1521
|
+
<p>Please install Ruby from <a href="http://www.ruby-lang.org/">the Ruby website</a>. Once Ruby is installed, run the following command (<a href="#is_ruby_home_or_system_wide_installed">possibly as root</a>) to install Rake:</p>
|
1522
|
+
</div>
|
1523
|
+
<div class="listingblock">
|
1524
|
+
<div class="content monospaced">
|
1525
|
+
<pre>gem install rake</pre>
|
1526
|
+
</div>
|
1527
|
+
</div>
|
1528
|
+
<span class="anchor_helper" id="_step_4_figuring_out_whether_your_ruby_is_installed_the_home_directory_or_system_wide"></span><h4 class="float" data-anchor="_step_4_figuring_out_whether_your_ruby_is_installed_the_home_directory_or_system_wide">Step 4: figuring out whether your Ruby is installed the home directory or system-wide</h4>
|
1529
|
+
<div class="paragraph"><p>Depending on whether you installed Ruby system-wide, you need to enter a root prompt before continuing to step 5. Please refer to <a href="#is_ruby_home_or_system_wide_installed">this section</a>.</p></div>
|
1530
|
+
<span class="anchor_helper" id="_step_5_run_the_phusion_passenger_installer"></span><h4 class="float" data-anchor="_step_5_run_the_phusion_passenger_installer">Step 5: run the Phusion Passenger installer</h4>
|
1531
|
+
<div class="paragraph"><p>Please refer to <a href="#run_passenger_installer">this section</a>.
|
1532
|
+
Note that the <span class="monospaced">passenger-install-nginx-module</span> command is inside the <em>bin</em> subdirectory of the Phusion Passenger source directory, so you would have to run something like <em>/opt/passenger/passenger-x.x.x/bin/passenger-install-nginx-module</em>.</p></div>
|
1533
|
+
<span class="anchor_helper" id="_step_6_verifying_that_phusion_passenger_is_running"></span><h4 class="float" data-anchor="_step_6_verifying_that_phusion_passenger_is_running">Step 6: Verifying that Phusion Passenger is running</h4>
|
1534
|
+
<div class="paragraph"><p>Please refer to <a href="#verify_passenger_running">this section</a>. Note that all Phusion Passenger administration scripts are located inside the <em>bin</em> subdirectory of the Phusion Passenger source directory, so you would have to run something like <em>/opt/passenger/passenger-x.x.x/bin/passenger-memory-stats</em>.</p></div>
|
1267
1535
|
</div>
|
1268
1536
|
<div class="sect2">
|
1269
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1270
|
-
<div class="paragraph"><p>
|
1271
|
-
|
1272
|
-
<div class="
|
1273
|
-
|
1537
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_installing_or_upgrading_on_ubuntu"></span><h3 data-comment-topic="installing-or-upgrading-on-ubuntu-fw5fvp" data-anchor="_installing_or_upgrading_on_ubuntu">2.3. Installing or upgrading on Ubuntu</h3>
|
1538
|
+
<div class="paragraph"><p>John Leach from Brightbox has kindly provided a Ubuntu packages for Phusion Passenger. The packages are available from the <a href="http://wiki.brightbox.co.uk/docs:phusion-passenger">Brightbox repository</a>. Only packages for the open source version of Phusion Passenger are provided. <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a> customers should use the <a href="#rubygems_generic_install">generic RubyGems installation method</a> or <a href="#tarball_generic_install">the generic tarball installation method</a> instead.</p></div>
|
1539
|
+
<div class="paragraph"><p>Add the following line to the Third Party Software Sources:</p></div>
|
1540
|
+
<div class="listingblock">
|
1541
|
+
<div class="content monospaced">
|
1542
|
+
<pre>deb http://apt.brightbox.net hardy main</pre>
|
1543
|
+
</div>
|
1544
|
+
</div>
|
1545
|
+
<div class="paragraph"><p>The simplest way to do that is to create a file in <em>/etc/apt/sources.list.d</em> containing the deb instruction, and then run <span class="monospaced">sudo apt-get update</span>.</p></div>
|
1546
|
+
<div class="paragraph"><p>Once you’ve done that, you can proceed with installing Phusion Passenger by running:</p></div>
|
1547
|
+
<div class="listingblock">
|
1548
|
+
<div class="content monospaced">
|
1549
|
+
<pre>sudo apt-get install libapache2-mod-passenger</pre>
|
1550
|
+
</div>
|
1551
|
+
</div>
|
1552
|
+
<div class="paragraph"><p>or, for the Nginx version:</p></div>
|
1553
|
+
<div class="listingblock">
|
1554
|
+
<div class="content monospaced">
|
1555
|
+
<pre>sudo apt-get install nginx-brightbox</pre>
|
1556
|
+
</div>
|
1557
|
+
</div>
|
1558
|
+
<div class="paragraph"><p>Please also visit <a href="http://wiki.brightbox.co.uk/docs:phusion-passenger">the package’s wiki page</a> for more documentation about this package.</p></div>
|
1559
|
+
</div>
|
1560
|
+
<div class="sect2">
|
1561
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_installing_or_upgrading_on_red_hat_fedora_centos_or_scientificlinux"></span><h3 data-comment-topic="installing-or-upgrading-on-red-hat-fedora-centos-or-scientificlinux-1uus5a1" data-anchor="_installing_or_upgrading_on_red_hat_fedora_centos_or_scientificlinux">2.4. Installing or upgrading on Red Hat, Fedora, CentOS or ScientificLinux</h3>
|
1562
|
+
<div class="paragraph"><p>YUM repositories with RPMs are maintained by <a href="https://github.com/erikogan/passenger">Erik Ogan</a> and <a href="http://stealthymonkeys.com/">Stealthy Monkeys Consulting</a>. Only packages for the open source version of Phusion Passenger are provided. <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a> customers should use the <a href="#rubygems_generic_install">generic RubyGems installation method</a> or <a href="#tarball_generic_install">the generic tarball installation method</a> instead.</p></div>
|
1563
|
+
<span class="anchor_helper" id="_step_1_install_the_release_package"></span><h4 class="float" data-anchor="_step_1_install_the_release_package">Step 1: Install the release package</h4>
|
1564
|
+
<div class="paragraph"><p>The easiest way to install Phusion Passenger and keep it up to date is to install the passenger-release package from the <a href="http://passenger.stealthymonkeys.com/">main repository</a>.</p></div>
|
1565
|
+
<div class="paragraph"><p>Fedora Core 15:</p></div>
|
1566
|
+
<div class="listingblock">
|
1567
|
+
<div class="content monospaced">
|
1568
|
+
<pre>yum install http://passenger.stealthymonkeys.com/fedora/15/passenger-release.noarch.rpm</pre>
|
1569
|
+
</div>
|
1570
|
+
</div>
|
1571
|
+
<div class="paragraph"><p>Fedora Core 14:</p></div>
|
1572
|
+
<div class="listingblock">
|
1573
|
+
<div class="content monospaced">
|
1574
|
+
<pre>yum install http://passenger.stealthymonkeys.com/fedora/14/passenger-release.noarch.rpm</pre>
|
1575
|
+
</div>
|
1576
|
+
</div>
|
1577
|
+
<div class="paragraph"><p>RHEL 5 / CentOS 5 / ScientificLinux 5: (Note: these packages depend on <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a>.)</p></div>
|
1578
|
+
<div class="listingblock">
|
1579
|
+
<div class="content monospaced">
|
1580
|
+
<pre>rpm -Uvh http://passenger.stealthymonkeys.com/rhel/5/passenger-release.noarch.rpm</pre>
|
1581
|
+
</div>
|
1582
|
+
</div>
|
1583
|
+
<div class="paragraph"><p>RHEL 6 / CentOS 6 / ScientificLinux 6:</p></div>
|
1584
|
+
<div class="listingblock">
|
1585
|
+
<div class="content monospaced">
|
1586
|
+
<pre>yum install http://passenger.stealthymonkeys.com/rhel/6/passenger-release.noarch.rpm</pre>
|
1587
|
+
</div>
|
1588
|
+
</div>
|
1589
|
+
<span class="anchor_helper" id="_step_2_use_yum"></span><h4 class="float" data-anchor="_step_2_use_yum">Step 2: Use YUM</h4>
|
1590
|
+
<div class="paragraph"><p>From there you can use <a href="http://prefetch.net/articles/yum.html">YUM</a> to install packages. For example, try one of these:</p></div>
|
1591
|
+
<div class="paragraph"><p>Phusion Passenger for Apache:</p></div>
|
1592
|
+
<div class="listingblock">
|
1593
|
+
<div class="content monospaced">
|
1594
|
+
<pre>yum install nginx-passenger</pre>
|
1595
|
+
</div>
|
1596
|
+
</div>
|
1597
|
+
<div class="paragraph"><p>Phusion Passenger for Nginx:</p></div>
|
1598
|
+
<div class="listingblock">
|
1599
|
+
<div class="content monospaced">
|
1600
|
+
<pre>yum install mod_passenger</pre>
|
1601
|
+
</div>
|
1602
|
+
</div>
|
1603
|
+
<div class="paragraph"><p>Phusion Passenger Standalone:</p></div>
|
1604
|
+
<div class="listingblock">
|
1605
|
+
<div class="content monospaced">
|
1606
|
+
<pre>yum install passenger-standalone</pre>
|
1607
|
+
</div>
|
1608
|
+
</div>
|
1609
|
+
<span class="anchor_helper" id="_building_your_own_packages"></span><h4 class="float" data-anchor="_building_your_own_packages">Building your own packages</h4>
|
1610
|
+
<div class="paragraph"><p>There are instructions for building your own packages and Yum repositories in the <a href="https://github.com/FooBarWidget/passenger/tree/master/rpm#readme">rpm directory ReadMe</a> within the <a href="https://github.com/FooBarWidget/passenger">GitHub repository</a>.</p></div>
|
1611
|
+
</div>
|
1612
|
+
<div class="sect2">
|
1613
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_upgrading_from_open_source_to_enterprise"></span><h3 data-comment-topic="upgrading-from-open-source-to-enterprise-1a58c2b" data-anchor="_upgrading_from_open_source_to_enterprise">2.5. Upgrading from open source to Enterprise</h3>
|
1614
|
+
<div class="paragraph"><p>Phusion Passenger comes in two variants: an open source version, as well as an <a href="https://www.phusionpassenger.com/enterprise">Enterprise version</a> which introduces a myriad of useful features that can improve stability and performance and efficiency.</p></div>
|
1615
|
+
<div class="paragraph"><p>Customers who have bought Phusion Passenger Enterprise can upgrade their open source installation to Enterprise as follows:</p></div>
|
1616
|
+
<div class="olist arabic"><ol class="arabic">
|
1617
|
+
<li>
|
1618
|
+
<p>
|
1619
|
+
<a href="#uninstalling">Uninstall the open source Phusion Passenger</a>.
|
1620
|
+
</p>
|
1621
|
+
</li>
|
1622
|
+
<li>
|
1623
|
+
<p>
|
1624
|
+
Install the Enterprise version by following one of the installation guides in this section (e.g. <a href="#rubygems_generic_install">RubyGems generic installation</a> or <a href="#tarball_generic_install">tarball generic installation</a>).
|
1625
|
+
</p>
|
1626
|
+
</li>
|
1627
|
+
</ol></div>
|
1628
|
+
<div class="paragraph"><p>The uninstallation is necessary because the Enterprise Ruby gem has a different gem name (<em>passenger-enterprise-server</em> instead of <em>passenger</em>), but the same administration command names (e.g. <span class="monospaced">passenger-status</span>). Uninstalling the open source version avoids any conflicts.</p></div>
|
1629
|
+
</div>
|
1630
|
+
<div class="sect2">
|
1631
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_non_interactive_automatic_headless_installs_or_upgrades"></span><h3 data-comment-topic="non-interactive-automatic-headless-installs-or-upgrades-834ymv" data-anchor="_non_interactive_automatic_headless_installs_or_upgrades">2.6. Non-interactive, automatic, headless installs or upgrades</h3>
|
1632
|
+
<div class="paragraph"><p>By default, the installer (<span class="monospaced">passenger-install-nginx-module</span>) is interactive. If you want to automate installation then you can do so by passing various answers to the installer through command line options. Please run the installer with <span class="monospaced">--help</span> for a list of available command line options.</p></div>
|
1633
|
+
</div>
|
1634
|
+
<div class="sect2">
|
1635
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_installing_as_a_normal_nginx_module_without_using_the_installer"></span><h3 data-comment-topic="installing-as-a-normal-nginx-module-without-using-the-installer-1kkpes5" data-anchor="_installing_as_a_normal_nginx_module_without_using_the_installer">2.7. Installing as a normal Nginx module without using the installer</h3>
|
1636
|
+
<div class="paragraph"><p>You can also install Phusion Passenger the way you install any other Nginx module, e.g. with <span class="monospaced">--add-module</span>. Run Nginx’s configure script with <span class="monospaced">--add-module=/path-to-passenger-root/ext/nginx</span>.</p></div>
|
1637
|
+
<div class="paragraph"><p>If you installed Phusion Passenger via the gem, then <em>path-to-passenger-root</em> can be obtained with the command:</p></div>
|
1274
1638
|
<div class="listingblock">
|
1275
1639
|
<div class="content monospaced">
|
1276
1640
|
<pre>passenger-config --root</pre>
|
@@ -1292,35 +1656,15 @@ line into your Nginx configuration file:</p></div>
|
|
1292
1656
|
<div class="paragraph"><p>After having done so, restart Nginx.</p></div>
|
1293
1657
|
</div>
|
1294
1658
|
<div class="sect2">
|
1295
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1296
|
-
<div class="paragraph"><p>
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
<div class="listingblock">
|
1303
|
-
<div class="content monospaced">
|
1304
|
-
<pre>passenger_root ...;
|
1305
|
-
passenger_ruby ...;</pre>
|
1306
|
-
</div>
|
1307
|
-
</div>
|
1308
|
-
<div class="paragraph"><p>Because you already had Phusion Passenger installed, you already had similar settings
|
1309
|
-
in your Nginx configuration file, just with different values. <strong>Replace</strong> the old settings with
|
1310
|
-
the new ones that you are instructed to paste. It is important that the old settings are
|
1311
|
-
removed, otherwise Phusion Passenger may malfunction.</p></div>
|
1312
|
-
<div class="paragraph"><p>When you’re done, restart Nginx.</p></div>
|
1313
|
-
</div>
|
1314
|
-
<div class="sect2">
|
1315
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><h3 id="_unloading_disabling_phusion_passenger_from_nginx_without_uninstalling_it" data-comment-topic="unloading-disabling-phusion-passenger-from-nginx-without-uninstalling-it-v447e0">2.6. Unloading (disabling) Phusion Passenger from Nginx without uninstalling it</h3>
|
1316
|
-
<div class="paragraph"><p>You can temporarily unload (disable) Phusion Passenger from Nginx, without
|
1317
|
-
uninstalling the Phusion Passenger files, so that Nginx behaves as if Phusion
|
1318
|
-
Passenger was never installed in the first place. This might be useful to you if,
|
1319
|
-
for example, you seem to be experiencing a problem caused by Phusion Passenger,
|
1320
|
-
but you want to make sure whether that’s actually the case, without having
|
1321
|
-
to go through the hassle of uninstalling Phusion Passenger completely. When disabled,
|
1659
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_disabling_without_uninstalling"></span><h3 data-comment-topic="disabling-without-uninstalling-1t5tqan" data-anchor="_disabling_without_uninstalling">2.8. Disabling without uninstalling</h3>
|
1660
|
+
<div class="paragraph"><p>You can temporarily unload (disable) Phusion Passenger from the web server, without
|
1661
|
+
uninstalling the Phusion Passenger files, so that the web server behaves as if Phusion
|
1662
|
+
Passenger was never installed in the first place. This might be useful to you if -
|
1663
|
+
for example - you seem to be experiencing a problem caused by Phusion Passenger,
|
1664
|
+
but you want to make sure whether that’s actually the case without having
|
1665
|
+
to through the hassle of uninstalling Phusion Passenger completely. When disabled,
|
1322
1666
|
Phusion Passenger will not occupy any memory or CPU or otherwise interfere with
|
1323
|
-
|
1667
|
+
the web server.</p></div>
|
1324
1668
|
<div class="paragraph"><p>To unload Phusion Passenger, edit your Nginx configuration file(s)
|
1325
1669
|
and comment out all Phusion Passenger configuration directives.</p></div>
|
1326
1670
|
<div class="paragraph"><p>For example, if your configuration file looks like this…</p></div>
|
@@ -1361,41 +1705,61 @@ http {
|
|
1361
1705
|
listen 80;
|
1362
1706
|
root /webapps/foo/public;
|
1363
1707
|
# passenger_enabled on;
|
1364
|
-
# passenger_use_global_queue on;
|
1365
1708
|
}
|
1366
1709
|
}</pre>
|
1367
1710
|
</div>
|
1368
1711
|
</div>
|
1369
|
-
<div class="paragraph"><p>After you’ve done this, save the file and restart
|
1712
|
+
<div class="paragraph"><p>After you’ve done this, save the configuration file and restart the web server.</p></div>
|
1370
1713
|
</div>
|
1371
1714
|
<div class="sect2">
|
1372
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1715
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="uninstalling"></span><h3 data-comment-topic="uninstalling-phusion-passenger-wuycvb" data-anchor="uninstalling">2.9. Uninstalling</h3>
|
1373
1716
|
<div class="paragraph"><p>To uninstall Phusion Passenger, please first remove all Phusion Passenger
|
1374
|
-
configuration directives from your
|
1717
|
+
configuration directives from your web server configuration file(s). After you’ve
|
1375
1718
|
done this, you need to remove the Phusion Passenger files.</p></div>
|
1376
1719
|
<div class="ulist"><ul>
|
1377
1720
|
<li>
|
1378
1721
|
<p>
|
1379
|
-
If you installed Phusion Passenger via a gem, then
|
1380
|
-
You might have to run this as root
|
1722
|
+
If you installed Phusion Passenger via a Ruby gem, then run <span class="monospaced">gem uninstall passenger</span> (or, if you’re an <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a> user, <span class="monospaced">gem uninstall passenger-enterprise-server</span>).
|
1723
|
+
You <a href="#is_ruby_home_or_system_wide_installed">might have to run this as root</a>.
|
1381
1724
|
</p>
|
1382
1725
|
</li>
|
1383
1726
|
<li>
|
1384
1727
|
<p>
|
1385
1728
|
If you installed Phusion Passenger via a source tarball, then remove the directory
|
1386
1729
|
in which you placed the extracted Phusion Passenger files. This directory is the
|
1387
|
-
same as the one pointed to the by <
|
1730
|
+
same as the one pointed to the by <span class="monospaced">PassengerRoot</span>/<span class="monospaced">passenger_root</span> configuration directive.
|
1731
|
+
</p>
|
1732
|
+
</li>
|
1733
|
+
<li>
|
1734
|
+
<p>
|
1735
|
+
If you installed Phusion Passenger through APT or YUM, then use them to uninstall Phusion Passenger.
|
1388
1736
|
</p>
|
1389
1737
|
</li>
|
1390
1738
|
</ul></div>
|
1391
|
-
<div class="paragraph"><p>
|
1392
|
-
|
1393
|
-
|
1739
|
+
<div class="paragraph"><p>Nginx does not have to be recompiled. Altough it contains Phusion Passenger code, it will not do anything when Phusion Passenger is disabled.</p></div>
|
1740
|
+
</div>
|
1741
|
+
<div class="sect2">
|
1742
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="moving_phusion_passenger"></span><h3 data-comment-topic="moving-to-a-different-directory-gif3wo" data-anchor="moving_phusion_passenger">2.10. Moving to a different directory</h3>
|
1743
|
+
<div class="paragraph"><p>If you installed Phusion Passenger through a tarball then you can move the Phusion Passenger directory to another location. This is not possible if you used any of the other installation methods.</p></div>
|
1744
|
+
<div class="paragraph"><p>First, move the directory to whereever you like:</p></div>
|
1745
|
+
<div class="listingblock">
|
1746
|
+
<div class="content monospaced">
|
1747
|
+
<pre>mv /opt/passenger/passenger-4.0.0 /usr/local/passenger-4.0.0</pre>
|
1748
|
+
</div>
|
1749
|
+
</div>
|
1750
|
+
<div class="paragraph"><p>Next you must tell your web server that Phusion Passenger has moved.
|
1751
|
+
Open your Nginx configuration file and set the <em>passenger_root</em> directive to the new location:</p></div>
|
1752
|
+
<div class="listingblock">
|
1753
|
+
<div class="content monospaced">
|
1754
|
+
<pre>passenger_root /usr/local/passenger-4.0.0</pre>
|
1755
|
+
</div>
|
1756
|
+
</div>
|
1757
|
+
<div class="paragraph"><p>Restart your web server to finalize the change.</p></div>
|
1394
1758
|
</div>
|
1395
1759
|
</div>
|
1396
1760
|
</div>
|
1397
1761
|
<div class="sect1">
|
1398
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1762
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="deploying_a_ror_app"></span><h2 data-comment-topic="deploying-a-ruby-on-rails-1-x-or-2-x-but-not-rails-3-application-b69gqa" data-anchor="deploying_a_ror_app">3. Deploying a Ruby on Rails 1.x or 2.x (but NOT Rails >= 3) application</h2>
|
1399
1763
|
<div class="sectionbody">
|
1400
1764
|
<div class="paragraph"><p>Suppose you have a Ruby on Rails application in <em>/webapps/mycook</em>, and you own
|
1401
1765
|
the domain <em>www.mycook.com</em>. You can either deploy your application to the
|
@@ -1413,7 +1777,7 @@ are run, is “production”. You can change this by changing the
|
|
1413
1777
|
</tr></table>
|
1414
1778
|
</div>
|
1415
1779
|
<div class="sect2">
|
1416
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1780
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_deploying_to_a_virtual_host_8217_s_root"></span><h3 data-comment-topic="deploying-to-a-virtual-host-s-root-1mh24z5" data-anchor="_deploying_to_a_virtual_host_8217_s_root">3.1. Deploying to a virtual host’s root</h3>
|
1417
1781
|
<div class="paragraph"><p>Add a <em>server</em> virtual host entry to your Nginx configuration file. The virtual
|
1418
1782
|
host’s root must point to your Ruby on Rails application’s <em>public</em> folder.</p></div>
|
1419
1783
|
<div class="paragraph"><p>Inside the <em>server</em> block, set <em>passenger_enabled on</em>.</p></div>
|
@@ -1437,7 +1801,7 @@ host’s root must point to your Ruby on Rails application’s <em>public</em> f
|
|
1437
1801
|
<div class="paragraph"><p>Then restart Nginx. The application has now been deployed.</p></div>
|
1438
1802
|
</div>
|
1439
1803
|
<div class="sect2">
|
1440
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1804
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="deploying_rails_to_sub_uri"></span><h3 data-comment-topic="deploying-to-a-sub-uri-1il2qj7" data-anchor="deploying_rails_to_sub_uri">3.2. Deploying to a sub URI</h3>
|
1441
1805
|
<div class="paragraph"><p>Suppose that you already have a <em>server</em> virtual host entry:</p></div>
|
1442
1806
|
<div class="listingblock">
|
1443
1807
|
<div class="content monospaced">
|
@@ -1506,7 +1870,7 @@ option to the <em>server</em> block:</p></div>
|
|
1506
1870
|
</div>
|
1507
1871
|
</div>
|
1508
1872
|
<div class="sect2">
|
1509
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1873
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_redeploying_restarting_the_ruby_on_rails_application"></span><h3 data-comment-topic="redeploying-restarting-the-ruby-on-rails-application--1eso761" data-anchor="_redeploying_restarting_the_ruby_on_rails_application">3.3. Redeploying (restarting the Ruby on Rails application)</h3>
|
1510
1874
|
<div class="paragraph"><p>Deploying a new version of a Ruby on Rails application is as simple as
|
1511
1875
|
re-uploading the application files, and restarting the application.</p></div>
|
1512
1876
|
<div class="paragraph"><p>There are two ways to restart the application:</p></div>
|
@@ -1537,20 +1901,20 @@ of this file has changed in order to determine whether the application should
|
|
1537
1901
|
be restarted.</p></div>
|
1538
1902
|
</div>
|
1539
1903
|
<div class="sect2">
|
1540
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1904
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_migrations"></span><h3 data-comment-topic="migrations-9yyb8w" data-anchor="_migrations">3.4. Migrations</h3>
|
1541
1905
|
<div class="paragraph"><p>Phusion Passenger is not related to Ruby on Rails migrations in any way. To
|
1542
1906
|
run migrations on your deployment server, please login to your deployment
|
1543
1907
|
server (e.g. with <em>ssh</em>) and type <span class="monospaced">rake db:migrate RAILS_ENV=production</span> in
|
1544
1908
|
a shell console, just like one would normally run migrations.</p></div>
|
1545
1909
|
</div>
|
1546
1910
|
<div class="sect2">
|
1547
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1911
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_capistrano_integration"></span><h3 data-comment-topic="capistrano-integration-1ktunm6" data-anchor="_capistrano_integration">3.5. Capistrano integration</h3>
|
1548
1912
|
<div class="paragraph"><p>See <a href="#capistrano">Capistrano recipe</a>.</p></div>
|
1549
1913
|
</div>
|
1550
1914
|
</div>
|
1551
1915
|
</div>
|
1552
1916
|
<div class="sect1">
|
1553
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1917
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="deploying_a_rack_app"></span><h2 data-comment-topic="deploying-a-rack-based-ruby-application-including-rails-3--12benx3" data-anchor="deploying_a_rack_app">4. Deploying a Rack-based Ruby application (including Rails >= 3)</h2>
|
1554
1918
|
<div class="sectionbody">
|
1555
1919
|
<div class="paragraph"><p>Phusion Passenger supports arbitrary Ruby web applications that follow the
|
1556
1920
|
<a href="http://rack.rubyforge.org/">Rack</a> interface.</p></div>
|
@@ -1603,7 +1967,7 @@ are run, is “production”. You can change this by changing the
|
|
1603
1967
|
</tr></table>
|
1604
1968
|
</div>
|
1605
1969
|
<div class="sect2">
|
1606
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
1970
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_tutorial_example_writing_and_deploying_a_hello_world_rack_application"></span><h3 data-comment-topic="tutorial-example-writing-and-deploying-a-hello-world-rack-application-1wstx99" data-anchor="_tutorial_example_writing_and_deploying_a_hello_world_rack_application">4.1. Tutorial/example: writing and deploying a Hello World Rack application</h3>
|
1607
1971
|
<div class="paragraph"><p>First we create a Phusion Passenger-compliant Rack directory structure:</p></div>
|
1608
1972
|
<div class="listingblock">
|
1609
1973
|
<div class="content monospaced">
|
@@ -1645,7 +2009,7 @@ the Nginx configuration file:</p></div>
|
|
1645
2009
|
under the URL <em>http://www.rackexample.com/</em>.</p></div>
|
1646
2010
|
</div>
|
1647
2011
|
<div class="sect2">
|
1648
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2012
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_deploying_to_a_virtual_host_8217_s_root_2"></span><h3 data-comment-topic="deploying-to-a-virtual-host-s-root-f02erj" data-anchor="_deploying_to_a_virtual_host_8217_s_root_2">4.2. Deploying to a virtual host’s root</h3>
|
1649
2013
|
<div class="paragraph"><p>Add a <em>server</em> virtual host entry to your Nginx configuration file. The virtual host’s
|
1650
2014
|
root must point to your Rack application’s <em>public</em> folder. You must also set
|
1651
2015
|
<em>passenger_enabled on</em> in the <em>server</em> block.</p></div>
|
@@ -1667,7 +2031,7 @@ root must point to your Rack application’s <em>public</em> folder. You must al
|
|
1667
2031
|
<div class="paragraph"><p>Then restart Nginx. The application has now been deployed.</p></div>
|
1668
2032
|
</div>
|
1669
2033
|
<div class="sect2">
|
1670
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2034
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="deploying_rack_to_sub_uri"></span><h3 data-comment-topic="deploying-to-a-sub-uri-37q0ou" data-anchor="deploying_rack_to_sub_uri">4.3. Deploying to a sub URI</h3>
|
1671
2035
|
<div class="paragraph"><p>Suppose that you already have a virtual host:</p></div>
|
1672
2036
|
<div class="listingblock">
|
1673
2037
|
<div class="content monospaced">
|
@@ -1737,7 +2101,7 @@ option to the <em>server</em> block:</p></div>
|
|
1737
2101
|
</div>
|
1738
2102
|
</div>
|
1739
2103
|
<div class="sect2">
|
1740
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2104
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_redeploying_restarting_the_rack_application"></span><h3 data-comment-topic="redeploying-restarting-the-rack-application--xnbfam" data-anchor="_redeploying_restarting_the_rack_application">4.4. Redeploying (restarting the Rack application)</h3>
|
1741
2105
|
<div class="paragraph"><p>Deploying a new version of a Rack application is as simple as
|
1742
2106
|
re-uploading the application files, and restarting the application.</p></div>
|
1743
2107
|
<div class="paragraph"><p>There are two ways to restart the application:</p></div>
|
@@ -1764,10 +2128,10 @@ command line:</p></div>
|
|
1764
2128
|
</div>
|
1765
2129
|
</div>
|
1766
2130
|
<div class="sect2">
|
1767
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2131
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_rackup_specifications_for_various_web_frameworks"></span><h3 data-comment-topic="rackup-specifications-for-various-web-frameworks-1a2cs41" data-anchor="_rackup_specifications_for_various_web_frameworks">4.5. Rackup specifications for various web frameworks</h3>
|
1768
2132
|
<div class="paragraph"><p>This subsection shows example <em>config.ru</em> files for various web frameworks.</p></div>
|
1769
2133
|
<div class="sect3">
|
1770
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2134
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_camping"></span><h4 data-comment-topic="camping-16vz2yb" data-anchor="_camping">4.5.1. Camping</h4>
|
1771
2135
|
<div class="listingblock">
|
1772
2136
|
<div class="content monospaced">
|
1773
2137
|
<pre>require 'rubygems'
|
@@ -1786,7 +2150,7 @@ run Rack::Adapter::Camping.new(Blog)</pre>
|
|
1786
2150
|
<div class="paragraph"><p>For Camping versions 2.0 and up, using <span class="monospaced">run Blog</span> as the final line will do.</p></div>
|
1787
2151
|
</div>
|
1788
2152
|
<div class="sect3">
|
1789
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2153
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_halcyon"></span><h4 data-comment-topic="halcyon-1benlfl" data-anchor="_halcyon">4.5.2. Halcyon</h4>
|
1790
2154
|
<div class="listingblock">
|
1791
2155
|
<div class="content monospaced">
|
1792
2156
|
<pre>require 'rubygems'
|
@@ -1798,7 +2162,7 @@ run Halcyon::Runner.new</pre>
|
|
1798
2162
|
</div>
|
1799
2163
|
</div>
|
1800
2164
|
<div class="sect3">
|
1801
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2165
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_mack"></span><h4 data-comment-topic="mack-1ezijq6" data-anchor="_mack">4.5.3. Mack</h4>
|
1802
2166
|
<div class="listingblock">
|
1803
2167
|
<div class="content monospaced">
|
1804
2168
|
<pre>ENV["MACK_ENV"] = ENV["RACK_ENV"]
|
@@ -1810,7 +2174,7 @@ run Mack::Utils::Server.build_app</pre>
|
|
1810
2174
|
</div>
|
1811
2175
|
</div>
|
1812
2176
|
<div class="sect3">
|
1813
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2177
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_merb"></span><h4 data-comment-topic="merb-ddsh55" data-anchor="_merb">4.5.4. Merb</h4>
|
1814
2178
|
<div class="listingblock">
|
1815
2179
|
<div class="content monospaced">
|
1816
2180
|
<pre>require 'rubygems'
|
@@ -1829,7 +2193,7 @@ run Merb::Rack::Application.new</pre>
|
|
1829
2193
|
</div>
|
1830
2194
|
</div>
|
1831
2195
|
<div class="sect3">
|
1832
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2196
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_ramaze"></span><h4 data-comment-topic="ramaze-1p2zod" data-anchor="_ramaze">4.5.5. Ramaze</h4>
|
1833
2197
|
<div class="listingblock">
|
1834
2198
|
<div class="content monospaced">
|
1835
2199
|
<pre>require "rubygems"
|
@@ -1842,7 +2206,7 @@ run Ramaze::Adapter::Base</pre>
|
|
1842
2206
|
</div>
|
1843
2207
|
</div>
|
1844
2208
|
<div class="sect3">
|
1845
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2209
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_sinatra"></span><h4 data-comment-topic="sinatra-a7u9ag" data-anchor="_sinatra">4.5.6. Sinatra</h4>
|
1846
2210
|
<div class="listingblock">
|
1847
2211
|
<div class="content monospaced">
|
1848
2212
|
<pre>require 'rubygems'
|
@@ -1857,7 +2221,7 @@ run Sinatra::Application</pre>
|
|
1857
2221
|
</div>
|
1858
2222
|
</div>
|
1859
2223
|
<div class="sect1">
|
1860
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2224
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_deploying_a_wsgi_python_application"></span><h2 data-comment-topic="deploying-a-wsgi-python-application-1or2efo" data-anchor="_deploying_a_wsgi_python_application">5. Deploying a WSGI (Python) application</h2>
|
1861
2225
|
<div class="sectionbody">
|
1862
2226
|
<div class="paragraph"><p>Phusion Passenger supports all WSGI-compliant Python web applications. Suppose that you have a WSGI application in <em>/webapps/wsgiapp</em>. Then that folder must contain at least three entries:</p></div>
|
1863
2227
|
<div class="ulist"><ul>
|
@@ -1890,7 +2254,7 @@ run Sinatra::Application</pre>
|
|
1890
2254
|
</div>
|
1891
2255
|
</div>
|
1892
2256
|
<div class="sect2">
|
1893
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2257
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_tutorial_example_writing_and_deploying_a_hello_world_wsgi_application"></span><h3 data-comment-topic="tutorial-example-writing-and-deploying-a-hello-world-wsgi-application-k5ron2" data-anchor="_tutorial_example_writing_and_deploying_a_hello_world_wsgi_application">5.1. Tutorial/example: writing and deploying a Hello World WSGI application</h3>
|
1894
2258
|
<div class="paragraph"><p>First we create a Phusion Passenger-compliant WSGI directory structure:</p></div>
|
1895
2259
|
<div class="listingblock">
|
1896
2260
|
<div class="content monospaced">
|
@@ -1907,7 +2271,7 @@ $ some_awesome_editor passenger_wsgi.py
|
|
1907
2271
|
...type in some source code...
|
1908
2272
|
$ cat passenger_wsgi.py
|
1909
2273
|
def application(environ, start_response):
|
1910
|
-
start_response(200, [('Content-Type', 'text/plain')])
|
2274
|
+
start_response('200 OK', [('Content-Type', 'text/plain')])
|
1911
2275
|
return ["hello world!\n"]</pre>
|
1912
2276
|
</div>
|
1913
2277
|
</div>
|
@@ -1931,7 +2295,7 @@ the Nginx configuration file:</p></div>
|
|
1931
2295
|
under the URL <em>http://www.wsgiexample.com/</em>.</p></div>
|
1932
2296
|
</div>
|
1933
2297
|
<div class="sect2">
|
1934
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2298
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_deploying_to_a_virtual_host_8217_s_root_3"></span><h3 data-comment-topic="deploying-to-a-virtual-host-s-root-1chcpbj" data-anchor="_deploying_to_a_virtual_host_8217_s_root_3">5.2. Deploying to a virtual host’s root</h3>
|
1935
2299
|
<div class="paragraph"><p>Add a <em>server</em> virtual host entry to your Nginx configuration file. The virtual host’s
|
1936
2300
|
root must point to your WSGI application’s <em>public</em> folder. You must also set
|
1937
2301
|
<em>passenger_enabled on</em> in the <em>server</em> block.</p></div>
|
@@ -1953,7 +2317,7 @@ root must point to your WSGI application’s <em>public</em> folder. You must al
|
|
1953
2317
|
<div class="paragraph"><p>Then restart Nginx. The application has now been deployed.</p></div>
|
1954
2318
|
</div>
|
1955
2319
|
<div class="sect2">
|
1956
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2320
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_redeploying_restarting_the_wsgi_application"></span><h3 data-comment-topic="redeploying-restarting-the-wsgi-application--10zdh2k" data-anchor="_redeploying_restarting_the_wsgi_application">5.3. Redeploying (restarting the WSGI application)</h3>
|
1957
2321
|
<div class="paragraph"><p>Deploying a new version of a WSGI application is as simple as
|
1958
2322
|
re-uploading the application files, and restarting the application.</p></div>
|
1959
2323
|
<div class="paragraph"><p>There are two ways to restart the application:</p></div>
|
@@ -1982,14 +2346,14 @@ command line:</p></div>
|
|
1982
2346
|
</div>
|
1983
2347
|
</div>
|
1984
2348
|
<div class="sect1">
|
1985
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2349
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_configuring_phusion_passenger"></span><h2 data-comment-topic="configuring-phusion-passenger-1g1svey" data-anchor="_configuring_phusion_passenger">6. Configuring Phusion Passenger</h2>
|
1986
2350
|
<div class="sectionbody">
|
1987
2351
|
<div class="paragraph"><p>After installation, Phusion Passenger does not need any further configurations.
|
1988
2352
|
Nevertheless, the system administrator may be interested in changing
|
1989
2353
|
Phusion Passenger’s behavior. Phusion Passenger supports the following configuration
|
1990
2354
|
options in the Nginx configuration file:</p></div>
|
1991
2355
|
<div class="sect2">
|
1992
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2356
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_root_lt_directory_gt"></span><h3 data-comment-topic="passenger-root-directory--bqvhhz" data-anchor="_passenger_root_lt_directory_gt">6.1. passenger_root <directory></h3>
|
1993
2357
|
<div class="paragraph"><p>The location to the Phusion Passenger root directory. This configuration option
|
1994
2358
|
is essential to Phusion Passenger, and allows Phusion Passenger to locate its own
|
1995
2359
|
data files. The correct value is given by the installer.</p></div>
|
@@ -1999,7 +2363,7 @@ this option as well. Please read
|
|
1999
2363
|
<div class="paragraph"><p>This required option may only occur once, in the <em>http</em> configuration block.</p></div>
|
2000
2364
|
</div>
|
2001
2365
|
<div class="sect2">
|
2002
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2366
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_ruby_lt_filename_gt"></span><h3 data-comment-topic="passenger-ruby-filename--1gnok5k" data-anchor="_passenger_ruby_lt_filename_gt">6.2. passenger_ruby <filename></h3>
|
2003
2367
|
<div class="paragraph"><p>This option allows one to specify the Ruby interpreter to use.</p></div>
|
2004
2368
|
<div class="ulist"><ul>
|
2005
2369
|
<li>
|
@@ -2026,7 +2390,7 @@ In an <em>if</em> configuration scope.
|
|
2026
2390
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>ruby</em>, meaning that the Ruby interpreter will be looked up according to the <span class="monospaced">PATH</span> environment variable.</p></div>
|
2027
2391
|
</div>
|
2028
2392
|
<div class="sect2">
|
2029
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2393
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerSpawnMethod"></span><h3 data-comment-topic="passenger-spawn-method-string--1sc6njl" data-anchor="PassengerSpawnMethod">6.3. passenger_spawn_method <string></h3>
|
2030
2394
|
<div class="admonitionblock">
|
2031
2395
|
<table><tr>
|
2032
2396
|
<td class="icon">
|
@@ -2119,7 +2483,7 @@ In an <em>if</em> configuration scope.
|
|
2119
2483
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>smart</em>.</p></div>
|
2120
2484
|
</div>
|
2121
2485
|
<div class="sect2">
|
2122
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2486
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerRollingRestarts"></span><h3 data-comment-topic="passenger-rolling-restarts" data-anchor="PassengerRollingRestarts">6.4. passenger_rolling_restarts <on|off></h3>
|
2123
2487
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
2124
2488
|
<div class="paragraph"><p>Enables or disables support for rolling restarts. Normally when you
|
2125
2489
|
restart an application (by touching restart.txt), Phusion Passenger would
|
@@ -2192,7 +2556,7 @@ In an <em>if</em> configuration scope.
|
|
2192
2556
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>off</em>.</p></div>
|
2193
2557
|
</div>
|
2194
2558
|
<div class="sect2">
|
2195
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2559
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_resist_deployment_errors_lt_on_off_gt"></span><h3 data-comment-topic="passenger-resist-deployment-errors-on-off--k9yf1" data-anchor="_passenger_resist_deployment_errors_lt_on_off_gt">6.5. passenger_resist_deployment_errors <on|off></h3>
|
2196
2560
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
2197
2561
|
<div class="paragraph"><p>Enables or disables resistance against deployment errors.</p></div>
|
2198
2562
|
<div class="paragraph"><p>Suppose you’ve upgraded your application and you’ve issues a command to restart it (by touching restart.txt), but the application code contains an error that prevents Phusion Passenger from successfully spawning a process (e.g. a syntax error). Phusion Passenger would normally display an error message in response to this.</p></div>
|
@@ -2242,9 +2606,9 @@ In an <em>if</em> configuration scope.
|
|
2242
2606
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>off</em>.</p></div>
|
2243
2607
|
</div>
|
2244
2608
|
<div class="sect2">
|
2245
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2609
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_important_deployment_options"></span><h3 data-comment-topic="important-deployment-options-av567" data-anchor="_important_deployment_options">6.6. Important deployment options</h3>
|
2246
2610
|
<div class="sect3">
|
2247
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2611
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_enabled_lt_on_off_gt"></span><h4 data-comment-topic="passenger-enabled-on-off--1rpb2t7" data-anchor="_passenger_enabled_lt_on_off_gt">6.6.1. passenger_enabled <on|off></h4>
|
2248
2612
|
<div class="paragraph"><p>This option may be specified in the <em>http</em> configuration block, a
|
2249
2613
|
<em>server</em> configuration block, a <em>location</em> configuration block or
|
2250
2614
|
an <em>if</em> configuration scope, to enable or disable Phusion Passenger
|
@@ -2256,7 +2620,7 @@ and <a href="#deploying_a_rack_app">Deploying a Rack-based Ruby application</a>
|
|
2256
2620
|
for examples.</p></div>
|
2257
2621
|
</div>
|
2258
2622
|
<div class="sect3">
|
2259
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2623
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerBaseURI"></span><h4 data-comment-topic="passenger-base-uri-uri--1xtuo50" data-anchor="PassengerBaseURI">6.6.2. passenger_base_uri <uri></h4>
|
2260
2624
|
<div class="paragraph"><p>Used to specify that the given URI is an distinct application that should
|
2261
2625
|
be served by Phusion Passenger. This option can be used for both Rails and
|
2262
2626
|
Rack applications. See <a href="#deploying_rails_to_sub_uri">Deploying Rails to a sub URI</a>
|
@@ -2289,9 +2653,9 @@ In an <em>if</em> configuration scope.
|
|
2289
2653
|
</div>
|
2290
2654
|
</div>
|
2291
2655
|
<div class="sect2">
|
2292
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2656
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_connection_handling_options"></span><h3 data-comment-topic="connection-handling-options-8jgq90" data-anchor="_connection_handling_options">6.7. Connection handling options</h3>
|
2293
2657
|
<div class="sect3">
|
2294
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2658
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_ignore_client_abort_lt_on_off_gt"></span><h4 data-comment-topic="passenger-ignore-client-abort" data-anchor="_passenger_ignore_client_abort_lt_on_off_gt">6.7.1. passenger_ignore_client_abort <on|off></h4>
|
2295
2659
|
<div class="paragraph"><p>Normally, when the HTTP client aborts the connection (e.g. when the user clicked on "Stop"
|
2296
2660
|
in the browser), the connection with the application process will be closed too. If the
|
2297
2661
|
application process continues to send its response, then that will result in EPIPE errors
|
@@ -2327,7 +2691,7 @@ In an <em>if</em> configuration scope.
|
|
2327
2691
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>off</em>.</p></div>
|
2328
2692
|
</div>
|
2329
2693
|
<div class="sect3">
|
2330
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2694
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_set_cgi_param_lt_cgi_environment_name_gt_lt_value_gt"></span><h4 data-comment-topic="passenger-set-cgi-param-cgi-environment-name-value--rx9gc0" data-anchor="_passenger_set_cgi_param_lt_cgi_environment_name_gt_lt_value_gt">6.7.2. passenger_set_cgi_param <CGI environment name> <value></h4>
|
2331
2695
|
<div class="paragraph"><p>Allows one to define additional CGI environment variables to pass to the backend
|
2332
2696
|
application. This is equivalent to ngx_http_fastcgi_module’s <em>fastcgi_param</em>
|
2333
2697
|
directive, and is comparable to ngx_http_proxy_module’s <em>proxy_set_header</em> option.
|
@@ -2378,7 +2742,7 @@ In an <em>if</em> configuration scope.
|
|
2378
2742
|
</ul></div>
|
2379
2743
|
</div>
|
2380
2744
|
<div class="sect3">
|
2381
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2745
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_pass_header_lt_header_name_gt"></span><h4 data-comment-topic="passenger-pass-header-header-name--1cg31je" data-anchor="_passenger_pass_header_lt_header_name_gt">6.7.3. passenger_pass_header <header name></h4>
|
2382
2746
|
<div class="paragraph"><p>Some headers generated by backend applications are not forwarded to the HTTP client,
|
2383
2747
|
e.g. <em>X-Accel-Redirect</em> which is directly processed by Nginx and then discarded from
|
2384
2748
|
the final response. This directive allows one to force Nginx to pass those headers
|
@@ -2416,18 +2780,34 @@ In an <em>if</em> configuration scope.
|
|
2416
2780
|
</ul></div>
|
2417
2781
|
</div>
|
2418
2782
|
<div class="sect3">
|
2419
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2420
|
-
<div class="paragraph"><p>When turned on, application-generated responses are buffered
|
2421
|
-
disk if the response is larger than a certain threshold
|
2422
|
-
|
2423
|
-
|
2424
|
-
<
|
2425
|
-
|
2426
|
-
|
2783
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_buffer_response_lt_on_off_gt"></span><h4 data-comment-topic="passenger-buffer-response" data-anchor="_passenger_buffer_response_lt_on_off_gt">6.7.4. passenger_buffer_response <on|off></h4>
|
2784
|
+
<div class="paragraph"><p>When turned on, application-generated responses are buffered by Nginx. Buffering will
|
2785
|
+
happen in memory and also on disk if the response is larger than a certain threshold.</p></div>
|
2786
|
+
<div class="paragraph"><p>Before we proceed with explaining this configuration option, we want to state the following to avoid confusion. If you use Phusion Passenger for Nginx, there are in fact two response buffering systems active:</p></div>
|
2787
|
+
<div class="olist arabic"><ol class="arabic">
|
2788
|
+
<li>
|
2789
|
+
<p>
|
2790
|
+
The Nginx response buffering system. <span class="monospaced">passenger_buffer_response</span> turns this on or off.
|
2791
|
+
</p>
|
2792
|
+
</li>
|
2793
|
+
<li>
|
2794
|
+
<p>
|
2795
|
+
The Phusion Passenger response buffering system, a.k.a. <em>real-time disk-backed response buffering</em>. This buffering system is always on, regardless of the value of <span class="monospaced">passenger_buffer_response</span>.
|
2796
|
+
</p>
|
2797
|
+
</li>
|
2798
|
+
</ol></div>
|
2799
|
+
<div class="paragraph"><p>Response buffering is useful because it protects against slow HTTP clients that do not read responses immediately or quickly enough. Buffering prevents such slow clients from blocking web applications that have limited concurrency. Because Phusion Passenger’s response buffering is always turned on, you are always protected. Therefore, <span class="monospaced">passenger_buffer_response</span> is off by default, and you never should have to turn it on.</p></div>
|
2800
|
+
<div class="paragraph"><p>If for whatever reason you want to turn Nginx-level response buffering on, you can do so with this option.</p></div>
|
2801
|
+
<div class="paragraph"><p>Nginx’s response buffering works differently from Phusion Passenger’s. Nginx’s buffering system buffers the entire response before attempting to send it to the client, while Phusion Passenger’s attempts to send the data to the client immediately. Therefore, if you turn on <span class="monospaced">passenger_buffer_response</span>, you may interfere with applications that want to stream responses to the client.</p></div>
|
2802
|
+
<div class="paragraph"><p>How does response buffering - whether it’s done by Nginx or by Phusion Passenger - exactly protect against slow clients?
|
2803
|
+
Consider an HTTP client that’s on a dial-up modem link, and your
|
2804
|
+
application process generates a 2 MB response. If the response is buffered
|
2805
|
+
then your application process will be blocked until the entire 2 MB has been
|
2427
2806
|
sent out to the HTTP client. This disallows your application process to do any useful
|
2428
|
-
work in the mean time. By
|
2429
|
-
the application response as quickly as possible and will take care of
|
2430
|
-
|
2807
|
+
work in the mean time. By buffering responses, Phusion Passenger or Nginx will read
|
2808
|
+
the application response as quickly as possible and will take care of forwarding the data
|
2809
|
+
to slow clients.</p></div>
|
2810
|
+
<div class="paragraph"><p>So keep in mind that enabling <span class="monospaced">passenger_buffering_response</span> will make streaming responses
|
2431
2811
|
impossible. Consider for example this piece of Rails code:</p></div>
|
2432
2812
|
<div class="listingblock">
|
2433
2813
|
<div class="content monospaced">
|
@@ -2457,11 +2837,11 @@ app = lambda do |env|
|
|
2457
2837
|
end</pre>
|
2458
2838
|
</div>
|
2459
2839
|
</div>
|
2460
|
-
<div class="paragraph"><p>When
|
2840
|
+
<div class="paragraph"><p>When <span class="monospaced">passenger_buffer_response</span> is turned on, Nginx will wait until
|
2461
2841
|
the application is done sending the entire response before forwarding it
|
2462
2842
|
to the client. The client will not receive anything for 10 seconds,
|
2463
2843
|
after which it receives the entire response at once.
|
2464
|
-
When
|
2844
|
+
When <span class="monospaced">passenger_buffer_response</span> is turned off, it works as expected: the client
|
2465
2845
|
receives an "entry X" message every second for 10 seconds.</p></div>
|
2466
2846
|
<div class="paragraph"><p>This option may occur in the following places:</p></div>
|
2467
2847
|
<div class="ulist"><ul>
|
@@ -2486,30 +2866,30 @@ In an <em>if</em> configuration scope.
|
|
2486
2866
|
</p>
|
2487
2867
|
</li>
|
2488
2868
|
</ul></div>
|
2489
|
-
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>
|
2869
|
+
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>off</em>.</p></div>
|
2490
2870
|
</div>
|
2491
2871
|
<div class="sect3">
|
2492
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2872
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_buffer_size"></span><h4 data-comment-topic="passenger-buffer-size-1jfkq87" data-anchor="_passenger_buffer_size">6.7.5. passenger_buffer_size</h4>
|
2493
2873
|
</div>
|
2494
2874
|
<div class="sect3">
|
2495
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2875
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_buffers"></span><h4 data-comment-topic="passenger-busy-buffers" data-anchor="_passenger_buffers">6.7.6. passenger_buffers</h4>
|
2496
2876
|
</div>
|
2497
2877
|
<div class="sect3">
|
2498
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2878
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_busy_buffer_size"></span><h4 data-comment-topic="passenger-busy-buffer-size-124sj61" data-anchor="_passenger_busy_buffer_size">6.7.7. passenger_busy_buffer_size</h4>
|
2499
2879
|
<div class="paragraph"><p>These options have the same effect as proxy_module’s similarly named options.
|
2500
2880
|
They can be used to modify the maximum allowed HTTP header size.</p></div>
|
2501
2881
|
</div>
|
2502
2882
|
</div>
|
2503
2883
|
<div class="sect2">
|
2504
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2884
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_security_options"></span><h3 data-comment-topic="security-options-1bv93g4" data-anchor="_security_options">6.8. Security options</h3>
|
2505
2885
|
<div class="sect3">
|
2506
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2886
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerUserSwitching"></span><h4 data-comment-topic="passenger-user-switching-on-off--1p37u3l" data-anchor="PassengerUserSwitching">6.8.1. passenger_user_switching <on|off></h4>
|
2507
2887
|
<div class="paragraph"><p>Whether to enable <a href="#user_switching">user switching support</a>.</p></div>
|
2508
2888
|
<div class="paragraph"><p>This option may only occur once, in the <em>http</em> configuration block.
|
2509
2889
|
The default value is <em>on</em>.</p></div>
|
2510
2890
|
</div>
|
2511
2891
|
<div class="sect3">
|
2512
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2892
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_user_lt_username_gt"></span><h4 data-comment-topic="passenger-user-username--b06ur7" data-anchor="_passenger_user_lt_username_gt">6.8.2. passenger_user <username></h4>
|
2513
2893
|
<div class="paragraph"><p>If <a href="#user_switching">user switching support</a> is enabled, then Phusion Passenger will
|
2514
2894
|
by default run the web application as the owner of the file <em>config/environment.rb</em>
|
2515
2895
|
(for Rails apps) or <em>config.ru</em> (for Rack apps). This option allows you to override
|
@@ -2541,7 +2921,7 @@ In an <em>if</em> configuration scope.
|
|
2541
2921
|
<div class="paragraph"><p>In each place, it may be specified at most once.</p></div>
|
2542
2922
|
</div>
|
2543
2923
|
<div class="sect3">
|
2544
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2924
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_group_lt_group_name_gt"></span><h4 data-comment-topic="passenger-user-group-name--1fco4j7" data-anchor="_passenger_group_lt_group_name_gt">6.8.3. passenger_group <group name></h4>
|
2545
2925
|
<div class="paragraph"><p>If <a href="#user_switching">user switching support</a> is enabled, then Phusion Passenger will
|
2546
2926
|
by default run the web application as the primary group of the owner of the file
|
2547
2927
|
<em>config/environment.rb</em> (for Rails apps) or <em>config.ru</em> (for Rack apps). This option
|
@@ -2575,7 +2955,7 @@ In an <em>if</em> configuration scope.
|
|
2575
2955
|
<div class="paragraph"><p>In each place, it may be specified at most once.</p></div>
|
2576
2956
|
</div>
|
2577
2957
|
<div class="sect3">
|
2578
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2958
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerDefaultUser"></span><h4 data-comment-topic="passenger-default-user-username--1h6cdmf" data-anchor="PassengerDefaultUser">6.8.4. passenger_default_user <username></h4>
|
2579
2959
|
<div class="paragraph"><p>Phusion Passenger enables <a href="#user_switching">user switching support</a> by default.
|
2580
2960
|
This configuration option allows one to specify the user that applications must
|
2581
2961
|
run as, if user switching fails or is disabled.</p></div>
|
@@ -2583,7 +2963,7 @@ run as, if user switching fails or is disabled.</p></div>
|
|
2583
2963
|
The default value is <em>nobody</em>.</p></div>
|
2584
2964
|
</div>
|
2585
2965
|
<div class="sect3">
|
2586
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2966
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerDefaultGroup"></span><h4 data-comment-topic="passenger-default-group-group-name--1qxn2qa" data-anchor="PassengerDefaultGroup">6.8.5. Passenger_default_group <group name></h4>
|
2587
2967
|
<div class="paragraph"><p>Phusion Passenger enables <a href="#user_switching">user switching support</a> by default.
|
2588
2968
|
This configuration option allows one to specify the group that applications must
|
2589
2969
|
run as, if user switching fails or is disabled.</p></div>
|
@@ -2592,7 +2972,7 @@ The default value is the primary group of the user specifified by
|
|
2592
2972
|
<a href="#PassengerDefaultUser">passenger_default_user</a>.</p></div>
|
2593
2973
|
</div>
|
2594
2974
|
<div class="sect3">
|
2595
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
2975
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_friendly_error_pages_lt_on_off_gt"></span><h4 data-comment-topic="passenger-friendly-error-pages-on-off--1ti1a0e" data-anchor="_passenger_friendly_error_pages_lt_on_off_gt">6.8.6. passenger_friendly_error_pages <on|off></h4>
|
2596
2976
|
<div class="paragraph"><p>Phusion Passenger can display friendly error pages whenever an application fails
|
2597
2977
|
to start. This friendly error page presents the startup error message, some
|
2598
2978
|
suggestions for solving the problem, and a backtrace. This feature is very useful
|
@@ -2627,9 +3007,9 @@ In an <em>if</em> configuration scope.
|
|
2627
3007
|
</div>
|
2628
3008
|
</div>
|
2629
3009
|
<div class="sect2">
|
2630
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3010
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_resource_control_and_optimization_options"></span><h3 data-comment-topic="resource-control-and-optimization-options-xd7evs" data-anchor="_resource_control_and_optimization_options">6.9. Resource control and optimization options</h3>
|
2631
3011
|
<div class="sect3">
|
2632
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3012
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerMaxPoolSize"></span><h4 data-comment-topic="passenger-max-pool-size-integer--3jzefs" data-anchor="PassengerMaxPoolSize">6.9.1. passenger_max_pool_size <integer></h4>
|
2633
3013
|
<div class="paragraph"><p>The maximum number of <a href="#application_process">application processes</a> that may
|
2634
3014
|
simultanously exist. A larger number results in higher memory usage,
|
2635
3015
|
but improved ability to handle concurrent HTTP clients.</p></div>
|
@@ -2656,7 +3036,7 @@ by about 33%, and it’s not hard to install.</td>
|
|
2656
3036
|
</div>
|
2657
3037
|
</div>
|
2658
3038
|
<div class="sect3">
|
2659
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3039
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerMinInstances"></span><h4 data-comment-topic="passenger-min-instances-integer--uclykt" data-anchor="PassengerMinInstances">6.9.2. passenger_min_instances <integer></h4>
|
2660
3040
|
<div class="paragraph"><p>This specifies the minimum number of application processes that should exist for a
|
2661
3041
|
given application. You should set this option to a
|
2662
3042
|
non-zero value if you want to avoid potentially long startup times after a website
|
@@ -2731,7 +3111,7 @@ In an <em>if</em> configuration scope.
|
|
2731
3111
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>1</em>.</p></div>
|
2732
3112
|
</div>
|
2733
3113
|
<div class="sect3">
|
2734
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3114
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_max_instances_lt_integer_gt"></span><h4 data-comment-topic="passenger-max-instances" data-anchor="_passenger_max_instances_lt_integer_gt">6.9.3. passenger_max_instances <integer></h4>
|
2735
3115
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
2736
3116
|
<div class="paragraph"><p>The maximum number of application processes that may simultaneously exist
|
2737
3117
|
for an application. This helps to make sure that a single application
|
@@ -2782,7 +3162,7 @@ on the other hand will be free to spawn up to 10 processes if it gets a lot of t
|
|
2782
3162
|
</div>
|
2783
3163
|
</div>
|
2784
3164
|
<div class="sect3">
|
2785
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3165
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_max_instances_per_app_lt_integer_gt"></span><h4 data-comment-topic="passenger-max-instances-per-app-integer--1xhbbne" data-anchor="_passenger_max_instances_per_app_lt_integer_gt">6.9.4. passenger_max_instances_per_app <integer></h4>
|
2786
3166
|
<div class="paragraph"><p>The maximum number of application processes that may simultaneously exist
|
2787
3167
|
for a single application. This helps to make sure that a single application
|
2788
3168
|
will not occupy all available slots in the application pool.</p></div>
|
@@ -2794,7 +3174,7 @@ will be enforced.</p></div>
|
|
2794
3174
|
The default value is <em>0</em>.</p></div>
|
2795
3175
|
</div>
|
2796
3176
|
<div class="sect3">
|
2797
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3177
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerPoolIdleTime"></span><h4 data-comment-topic="passenger-pool-idle-time-integer--xcw65o" data-anchor="PassengerPoolIdleTime">6.9.5. passenger_pool_idle_time <integer></h4>
|
2798
3178
|
<div class="paragraph"><p>The maximum number of seconds that an application process may be idle. That is,
|
2799
3179
|
if an application process hasn’t received any traffic after the given number of
|
2800
3180
|
seconds, then it will be shutdown in order to conserve memory.</p></div>
|
@@ -2816,7 +3196,7 @@ applications, each which must be available at all times.</p></div>
|
|
2816
3196
|
The default value is <em>300</em>.</p></div>
|
2817
3197
|
</div>
|
2818
3198
|
<div class="sect3">
|
2819
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3199
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_max_preloader_idle_time_lt_integer_gt"></span><h4 data-comment-topic="rails-app-spawner-idle-time-integer--1xjqe4b" data-anchor="_passenger_max_preloader_idle_time_lt_integer_gt">6.9.6. passenger_max_preloader_idle_time <integer></h4>
|
2820
3200
|
<div class="paragraph"><p>The ApplicationSpawner server (explained in <a href="#spawning_methods_explained">Spawning methods explained</a>) has an idle timeout, just like the backend processes spawned by
|
2821
3201
|
Phusion Passenger do. That is, it will automatically shutdown if it hasn’t done
|
2822
3202
|
anything for a given period.</p></div>
|
@@ -2855,7 +3235,7 @@ In an <em>if</em> configuration scope.
|
|
2855
3235
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>300</em> (5 minutes).</p></div>
|
2856
3236
|
</div>
|
2857
3237
|
<div class="sect3">
|
2858
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3238
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerConcurrencyModel"></span><h4 data-comment-topic="passenger-concurrency-model-process-thread--brcvkk" data-anchor="PassengerConcurrencyModel">6.9.7. passenger_concurrency_model <process|thread></h4>
|
2859
3239
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 4.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
2860
3240
|
<div class="paragraph"><p>Specifies the I/O concurrency model that should be used for application processes. Phusion Passenger supports two concurrency models:</p></div>
|
2861
3241
|
<div class="ulist"><ul>
|
@@ -2896,7 +3276,7 @@ In an <em>if</em> configuration scope.
|
|
2896
3276
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>process</em>.</p></div>
|
2897
3277
|
</div>
|
2898
3278
|
<div class="sect3">
|
2899
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3279
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerThreadCount"></span><h4 data-comment-topic="passenger-thread-count-number--1kd6ffy" data-anchor="PassengerThreadCount">6.9.8. passenger_thread_count <number></h4>
|
2900
3280
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 4.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
2901
3281
|
<div class="paragraph"><p>Specifies the number of threads that Phusion Passenger should spawn per application process. This option only has effect if <a href="#PassengerConcurrencyModel">passenger_concurrency_model</a> is <em>thread</em>.</p></div>
|
2902
3282
|
<div class="paragraph"><p>This option may occur in the following places:</p></div>
|
@@ -2925,7 +3305,7 @@ In an <em>if</em> configuration scope.
|
|
2925
3305
|
<div class="paragraph"><p>In each place, it may be specified at most once. The default value is <em>1</em>.</p></div>
|
2926
3306
|
</div>
|
2927
3307
|
<div class="sect3">
|
2928
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3308
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerMaxRequests"></span><h4 data-comment-topic="passenger-max-requests-integer--sgzint" data-anchor="PassengerMaxRequests">6.9.9. passenger_max_requests <integer></h4>
|
2929
3309
|
<div class="paragraph"><p>The maximum number of requests an application process will process. After
|
2930
3310
|
serving that many requests, the application process will be shut down and
|
2931
3311
|
Phusion Passenger will restart it. A value of 0 means that there is no maximum:
|
@@ -2973,7 +3353,7 @@ measure to avoid memory leaks.</p></div>
|
|
2973
3353
|
</div>
|
2974
3354
|
</div>
|
2975
3355
|
<div class="sect3">
|
2976
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3356
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerMaxRequestTime"></span><h4 data-comment-topic="passenger-max-request-time-seconds--1htog2g" data-anchor="PassengerMaxRequestTime">6.9.10. passenger_max_request_time <seconds></h4>
|
2977
3357
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
2978
3358
|
<div class="paragraph"><p>The maximum amount of time, in seconds, that an application process may take
|
2979
3359
|
to process a request. If the request takes longer than this amount of time,
|
@@ -3044,7 +3424,7 @@ measure to avoid freezing applications.</p></div>
|
|
3044
3424
|
</div>
|
3045
3425
|
</div>
|
3046
3426
|
<div class="sect3">
|
3047
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3427
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerMemoryLimit"></span><h4 data-comment-topic="passenger-memory-limit-integer--1ry7dwx" data-anchor="PassengerMemoryLimit">6.9.11. passenger_memory_limit <integer></h4>
|
3048
3428
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
3049
3429
|
<div class="paragraph"><p>The maximum amount of memory that an application process may use, in megabytes.
|
3050
3430
|
Once an application process has surpassed its memory limit, it will process
|
@@ -3130,7 +3510,7 @@ measure to avoid memory leaks.</p></div>
|
|
3130
3510
|
</div>
|
3131
3511
|
</div>
|
3132
3512
|
<div class="sect3">
|
3133
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3513
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="PassengerPreStart"></span><h4 data-comment-topic="passenger-pre-start-url--npldeb" data-anchor="PassengerPreStart">6.9.12. passenger_pre_start <url></h4>
|
3134
3514
|
<div class="paragraph"><p>By default, Phusion Passenger does not start any application processes until said
|
3135
3515
|
web application is first accessed. The result is that the first visitor of said
|
3136
3516
|
web application might experience a small delay as Phusion Passenger is starting
|
@@ -3345,9 +3725,9 @@ the request ending up at a different web server in the cluster.</p></div>
|
|
3345
3725
|
</div>
|
3346
3726
|
</div>
|
3347
3727
|
<div class="sect2">
|
3348
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3728
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_logging_and_debugging_options"></span><h3 data-comment-topic="logging-and-debugging-options-14e91ni" data-anchor="_logging_and_debugging_options">6.10. Logging and debugging options</h3>
|
3349
3729
|
<div class="sect3">
|
3350
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3730
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_log_level_lt_integer_gt"></span><h4 data-comment-topic="passenger-log-level-integer--17snhon" data-anchor="_passenger_log_level_lt_integer_gt">6.10.1. passenger_log_level <integer></h4>
|
3351
3731
|
<div class="paragraph"><p>This option allows one to specify how much information Phusion Passenger should
|
3352
3732
|
write to the Nginx error log file. A higher log level value means that more
|
3353
3733
|
information will be logged.</p></div>
|
@@ -3380,14 +3760,14 @@ information will be logged.</p></div>
|
|
3380
3760
|
The default is <em>0</em>.</p></div>
|
3381
3761
|
</div>
|
3382
3762
|
<div class="sect3">
|
3383
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3763
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_debug_log_file_lt_filename_gt"></span><h4 data-comment-topic="passenger-debug-log-file-filename--21ubaj" data-anchor="_passenger_debug_log_file_lt_filename_gt">6.10.2. passenger_debug_log_file <filename></h4>
|
3384
3764
|
<div class="paragraph"><p>By default Phusion Passenger debugging and error messages are written to the global
|
3385
3765
|
web server error log. This option allows one to specify the file that debugging and
|
3386
3766
|
error messages should be written to instead.</p></div>
|
3387
3767
|
<div class="paragraph"><p>This option may only occur once, in the <em>http</em> configuration block.</p></div>
|
3388
3768
|
</div>
|
3389
3769
|
<div class="sect3">
|
3390
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3770
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_passenger_debugger_lt_on_off_gt"></span><h4 data-comment-topic="passenger-debugger-on-off--1wkuq85" data-anchor="_passenger_debugger_lt_on_off_gt">6.10.3. passenger_debugger <on|off></h4>
|
3391
3771
|
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
3392
3772
|
<div class="paragraph"><p>Turns support for application debugging on or off. In case of Ruby applications,
|
3393
3773
|
turning this option on will cause them to load the <span class="monospaced">ruby-debug</span> gem (when on Ruby 1.8)
|
@@ -3427,9 +3807,9 @@ In an <em>if</em> configuration scope.
|
|
3427
3807
|
</div>
|
3428
3808
|
</div>
|
3429
3809
|
<div class="sect2">
|
3430
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3810
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_ruby_on_rails_specific_options"></span><h3 data-comment-topic="ruby-on-rails-specific-options-12vfokt" data-anchor="_ruby_on_rails_specific_options">6.11. Ruby on Rails-specific options</h3>
|
3431
3811
|
<div class="sect3">
|
3432
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3812
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="RailsEnv"></span><h4 data-comment-topic="rails-env-string--jlh7v9" data-anchor="RailsEnv">6.11.1. rails_env <string></h4>
|
3433
3813
|
<div class="paragraph"><p>This option allows one to specify the default <span class="monospaced">RAILS_ENV</span> value.</p></div>
|
3434
3814
|
<div class="paragraph"><p>This option may occur in the following places:</p></div>
|
3435
3815
|
<div class="ulist"><ul>
|
@@ -3458,9 +3838,9 @@ In an <em>if</em> configuration scope.
|
|
3458
3838
|
</div>
|
3459
3839
|
</div>
|
3460
3840
|
<div class="sect2">
|
3461
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3841
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_rack_and_rails_gt_3_specific_options"></span><h3 data-comment-topic="rack-specific-options-13yvdxs" data-anchor="_rack_and_rails_gt_3_specific_options">6.12. Rack and Rails >= 3 specific options</h3>
|
3462
3842
|
<div class="sect3">
|
3463
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3843
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="RackEnv"></span><h4 data-comment-topic="rack-env-string--tqmrt0" data-anchor="RackEnv">6.12.1. rack_env <string></h4>
|
3464
3844
|
<div class="paragraph"><p>This option allows one to specify the default <span class="monospaced">RACK_ENV</span> value.</p></div>
|
3465
3845
|
<div class="paragraph"><p>This option may occur in the following places:</p></div>
|
3466
3846
|
<div class="ulist"><ul>
|
@@ -3489,23 +3869,23 @@ In an <em>if</em> configuration scope.
|
|
3489
3869
|
</div>
|
3490
3870
|
</div>
|
3491
3871
|
<div class="sect2">
|
3492
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3872
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_deprecated_options"></span><h3 data-comment-topic="deprecated-options-1dtzo0g" data-anchor="_deprecated_options">6.13. Deprecated options</h3>
|
3493
3873
|
<div class="paragraph"><p>The following options have been deprecated, but are still supported for backwards
|
3494
3874
|
compatibility reasons.</p></div>
|
3495
3875
|
<div class="sect3">
|
3496
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3876
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_rails_spawn_method"></span><h4 data-comment-topic="rails-spawn-method-17vdnpt" data-anchor="_rails_spawn_method">6.13.1. rails_spawn_method</h4>
|
3497
3877
|
<div class="paragraph"><p>Deprecated in favor of <a href="#PassengerSpawnMethod">passenger_spawn_method</a>.</p></div>
|
3498
3878
|
</div>
|
3499
3879
|
</div>
|
3500
3880
|
</div>
|
3501
3881
|
</div>
|
3502
3882
|
<div class="sect1">
|
3503
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3883
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_analysis_and_system_maintenance"></span><h2 data-comment-topic="analysis-and-system-maintenance-1nnlnj8" data-anchor="_analysis_and_system_maintenance">7. Analysis and system maintenance</h2>
|
3504
3884
|
<div class="sectionbody">
|
3505
3885
|
<div class="paragraph"><p>Phusion Passenger provides a set of tools, which are useful for system analysis,
|
3506
3886
|
maintenance and troubleshooting.</p></div>
|
3507
3887
|
<div class="sect2">
|
3508
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3888
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_inspecting_memory_usage"></span><h3 data-comment-topic="inspecting-memory-usage-1k6y8v0" data-anchor="_inspecting_memory_usage">7.1. Inspecting memory usage</h3>
|
3509
3889
|
<div class="paragraph"><p>Process inspection tools such as <span class="monospaced">ps</span> and <span class="monospaced">top</span> are useful, but they
|
3510
3890
|
<a href="http://groups.google.com/group/phusion-passenger/msg/1fd1c233456d3180">rarely show the correct memory usage</a>.
|
3511
3891
|
The real memory usage is usually lower than what <span class="monospaced">ps</span> and <span class="monospaced">top</span> report.</p></div>
|
@@ -3558,7 +3938,7 @@ the Resident Set Size is reported instead.</td>
|
|
3558
3938
|
</div>
|
3559
3939
|
</div>
|
3560
3940
|
<div class="sect2">
|
3561
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
3941
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_inspecting_phusion_passenger_8217_s_internal_status"></span><h3 data-comment-topic="inspecting-phusion-passenger-s-internal-status-v36wbc" data-anchor="_inspecting_phusion_passenger_8217_s_internal_status">7.2. Inspecting Phusion Passenger’s internal status</h3>
|
3562
3942
|
<div class="paragraph"><p>One can inspect Phusion Passenger’s internal status with the tool <span class="monospaced">passenger-status</span>.
|
3563
3943
|
This tool must typically be run as root. For example:</p></div>
|
3564
3944
|
<div class="listingblock">
|
@@ -3690,7 +4070,7 @@ Your application is frozen, i.e. has stopped responding. See
|
|
3690
4070
|
</ol></div>
|
3691
4071
|
</div>
|
3692
4072
|
<div class="sect2">
|
3693
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4073
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="debugging_frozen"></span><h3 data-comment-topic="debugging-frozen-applications-qoctl8" data-anchor="debugging_frozen">7.3. Debugging frozen applications</h3>
|
3694
4074
|
<div class="paragraph"><p>If one of your application instances is frozen (stopped responding), then you
|
3695
4075
|
can figure out where it is frozen by killing it with <em>SIGABRT</em>. This will cause the
|
3696
4076
|
application to raise an exception, with a backtrace.</p></div>
|
@@ -3712,7 +4092,7 @@ will restart killed application instances, as if nothing bad happened.</td>
|
|
3712
4092
|
</div>
|
3713
4093
|
</div>
|
3714
4094
|
<div class="sect2">
|
3715
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4095
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_accessing_individual_application_processes"></span><h3 data-comment-topic="accessing-individual-application-processes-1qe4fqk" data-anchor="_accessing_individual_application_processes">7.4. Accessing individual application processes</h3>
|
3716
4096
|
<div class="paragraph"><p>When a request is sent to the web server, Phusion Passenger will automatically forward
|
3717
4097
|
the request to the most suitable application process, but sometimes it is desirable to
|
3718
4098
|
be able to directly access the individual application processes. Use cases include, but
|
@@ -3778,16 +4158,17 @@ through the <em>X-Passenger-Connect-Password</em> HTTP header, like this:</p></d
|
|
3778
4158
|
</div>
|
3779
4159
|
</div>
|
3780
4160
|
<div class="sect2">
|
3781
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4161
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_attaching_an_irb_console_to_an_application_process"></span><h3 data-comment-topic="attaching-an-irb-console-to-an-application-process-d36enw" data-anchor="_attaching_an_irb_console_to_an_application_process">7.5. Attaching an IRB console to an application process</h3>
|
4162
|
+
<div class="paragraph"><p><strong>This feature is only available in <a href="https://www.phusionpassenger.com/enterprise">Phusion Passenger Enterprise</a>. It was introduced in version 3.0.0. <a href="https://www.phusionpassenger.com/download">Buy Phusion Passenger Enterprise here.</a></strong></p></div>
|
3782
4163
|
<div class="paragraph"><p>You can attach an IRB console to any application process and inspect its state by executing arbitrary Ruby code. Do this by invoking <span class="monospaced">passenger-irb <PID></span> where <em><PID></em> is the PID of the application process you wish to inspect. Note that the IRB console is currently only available for Ruby apps, not for apps in any other languages.</p></div>
|
3783
4164
|
</div>
|
3784
4165
|
</div>
|
3785
4166
|
</div>
|
3786
4167
|
<div class="sect1">
|
3787
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4168
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_tips"></span><h2 data-comment-topic="tips-n4c22d" data-anchor="_tips">8. Tips</h2>
|
3788
4169
|
<div class="sectionbody">
|
3789
4170
|
<div class="sect2">
|
3790
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4171
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="user_switching"></span><h3 data-comment-topic="user-switching-security--zmsy9o" data-anchor="user_switching">8.1. User switching (security)</h3>
|
3791
4172
|
<div class="paragraph"><p>There is a problem that plagues most PHP web hosts, namely the fact that all PHP
|
3792
4173
|
applications are run in the same user context as the web server. So for
|
3793
4174
|
example, Joe’s PHP application will be able to read Jane’s PHP application’s
|
@@ -3827,14 +4208,14 @@ Under no circumstances will applications be run as <em>root</em>. If
|
|
3827
4208
|
option.</p></div>
|
3828
4209
|
</div>
|
3829
4210
|
<div class="sect2">
|
3830
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4211
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="reducing_memory_usage"></span><h3 data-comment-topic="reducing-memory-consumption-of-ruby-on-rails-applications-by-33--1o3z66q" data-anchor="reducing_memory_usage">8.2. Reducing memory consumption of Ruby on Rails applications by 33%</h3>
|
3831
4212
|
<div class="paragraph"><p>Is it possible to reduce memory consumption of your Rails applications by 33% on average,
|
3832
4213
|
by using <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a>.
|
3833
4214
|
Please visit the website for details.</p></div>
|
3834
4215
|
<div class="paragraph"><p>Note that this feature does not apply to Rack applications.</p></div>
|
3835
4216
|
</div>
|
3836
4217
|
<div class="sect2">
|
3837
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4218
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="capistrano"></span><h3 data-comment-topic="capistrano-recipe-pfn4qu" data-anchor="capistrano">8.3. Capistrano recipe</h3>
|
3838
4219
|
<div class="paragraph"><p>Phusion Passenger can be combined with <a href="http://capify.org/">Capistrano</a>.
|
3839
4220
|
The following Capistrano recipe demonstrates Phusion Passenger support.
|
3840
4221
|
It assumes that you’re using Git as version control system.</p></div>
|
@@ -3869,7 +4250,7 @@ end</pre>
|
|
3869
4250
|
</div>
|
3870
4251
|
</div>
|
3871
4252
|
<div class="sect2">
|
3872
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4253
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="bundler_support"></span><h3 data-comment-topic="bundler-support-19v1h43" data-anchor="bundler_support">8.4. Bundler support</h3>
|
3873
4254
|
<div class="paragraph"><p>Phusion Passenger has automatic support for <a href="http://gembundler.com/git.html">Bundler</a>.
|
3874
4255
|
It works as follows:</p></div>
|
3875
4256
|
<div class="ulist"><ul>
|
@@ -3902,7 +4283,7 @@ the application startup file. In this file you can do whatever you need to setup
|
|
3902
4283
|
or a similar system.</p></div>
|
3903
4284
|
</div>
|
3904
4285
|
<div class="sect2">
|
3905
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4286
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="moving_phusion_passenger"></span><h3 data-comment-topic="moving-phusion-passenger-to-a-different-directory-1hel5cp" data-anchor="moving_phusion_passenger">8.5. Moving Phusion Passenger to a different directory</h3>
|
3906
4287
|
<div class="paragraph"><p>It is possible to relocate the Phusion Passenger files to a different directory. It
|
3907
4288
|
involves two steps:</p></div>
|
3908
4289
|
<div class="olist arabic"><ol class="arabic">
|
@@ -3943,7 +4324,7 @@ Edit your Apache configuration file, and set:
|
|
3943
4324
|
</ol></div>
|
3944
4325
|
</div>
|
3945
4326
|
<div class="sect2">
|
3946
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4327
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_installing_multiple_ruby_on_rails_versions"></span><h3 data-comment-topic="installing-multiple-ruby-on-rails-versions-1bp1fff" data-anchor="_installing_multiple_ruby_on_rails_versions">8.6. Installing multiple Ruby on Rails versions</h3>
|
3947
4328
|
<div class="paragraph"><p>Each Ruby on Rails applications that are going to be deployed may require a
|
3948
4329
|
specific Ruby on Rails version. You can install a specific version with
|
3949
4330
|
this command:</p></div>
|
@@ -3957,7 +4338,7 @@ this command:</p></div>
|
|
3957
4338
|
other. Phusion Passenger will automatically make use of the correct version.</p></div>
|
3958
4339
|
</div>
|
3959
4340
|
<div class="sect2">
|
3960
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4341
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_making_the_application_restart_after_each_request"></span><h3 data-comment-topic="making-the-application-restart-after-each-request-vimy48" data-anchor="_making_the_application_restart_after_each_request">8.7. Making the application restart after each request</h3>
|
3961
4342
|
<div class="paragraph"><p>In some situations it might be desirable to restart the web application after
|
3962
4343
|
each request, for example when developing a non-Rails application that doesn’t
|
3963
4344
|
support code reloading, or when developing a web framework.</p></div>
|
@@ -3980,7 +4361,7 @@ does not support code reloading.</td>
|
|
3980
4361
|
</div>
|
3981
4362
|
</div>
|
3982
4363
|
<div class="sect2">
|
3983
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4364
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="sub_uri_deployment_uri_fix"></span><h3 data-comment-topic="how-to-fix-broken-images-css-javascript-uris-in-sub-uri-deployments-11mzwt6" data-anchor="sub_uri_deployment_uri_fix">8.8. How to fix broken images/CSS/JavaScript URIs in sub-URI deployments</h3>
|
3984
4365
|
<div class="paragraph"><p>Some people experience broken images and other broken static assets when they
|
3985
4366
|
deploy their application to a sub-URI (i.e. <em>http://mysite.com/railsapp/</em>).
|
3986
4367
|
The reason for this usually is that you used a
|
@@ -4017,16 +4398,91 @@ append a timestamp to the URI to better facilitate HTTP caching. For more inform
|
|
4017
4398
|
please refer to
|
4018
4399
|
<a href="http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html">the Rails API docs</a>.</p></div>
|
4019
4400
|
</div>
|
4401
|
+
<div class="sect2">
|
4402
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_out_of_band_garbage_work_and_out_of_band_garbage_collection"></span><h3 data-comment-topic="out-of-band-garbage-work-and-out-of-band-garbage-collection-v89lu2" data-anchor="_out_of_band_garbage_work_and_out_of_band_garbage_collection">8.9. Out-of-Band Garbage Work and Out-of-Band Garbage Collection</h3>
|
4403
|
+
<div class="paragraph"><p><strong>Available since Phusion Passenger 4.0.0.</strong></p></div>
|
4404
|
+
<div class="paragraph"><p><strong>At this time, this feature is only available on Ruby.</strong></p></div>
|
4405
|
+
<div class="paragraph"><p>The Out-of-Band Work feature allows you to run arbitrary long-running tasks outside normal request cycles. This works by letting current requests to the process finish, then telling the process to perform the out-of-band work, then resuming passing requests to the process after said work is finished.</p></div>
|
4406
|
+
<div class="paragraph"><p>A specific (and perhaps primary) use case of of Out-of-Band Work is <strong>Out-of-Band Garbage Collection</strong>. The garbage collector is run outside normal request cycles so that garbage collection runs inside normal request cycles can finish a lot faster. This can potentially save tens to hundreds of milliseconds of latency in requests.</p></div>
|
4407
|
+
<div class="paragraph"><p>Because Out-of-Band Work is implemented at the Phusion Passenger inter-process request routing level, and not by, say, spawning a thread inside the application process, Out-of-Band Work has the following useful properties:</p></div>
|
4408
|
+
<div class="ulist"><ul>
|
4409
|
+
<li>
|
4410
|
+
<p>
|
4411
|
+
It works well even with tasks that can pause all threads. The MRI Ruby garbage collector is a stop-the-world mark-and-sweep garbage collector.
|
4412
|
+
</p>
|
4413
|
+
</li>
|
4414
|
+
<li>
|
4415
|
+
<p>
|
4416
|
+
Phusion Passenger can spawn more processes as necessary, in order to prevent situations in which all application processes are busy performing out-of-band work. Phusion Passenger guarantees that there’s at least one process that’s ready to process requests.
|
4417
|
+
</p>
|
4418
|
+
</li>
|
4419
|
+
</ul></div>
|
4420
|
+
<div class="paragraph"><p>Applications can use Out-of-Band Work as follows:</p></div>
|
4421
|
+
<div class="olist arabic"><ol class="arabic">
|
4422
|
+
<li>
|
4423
|
+
<p>
|
4424
|
+
Request out-of-band work by outputting the <span class="monospaced">X-Passenger-Request-OOB-Work</span> header during a request. It does not matter what the value is. At this time, it is not possible to request out-of-band work from outside requests.
|
4425
|
+
</p>
|
4426
|
+
</li>
|
4427
|
+
<li>
|
4428
|
+
<p>
|
4429
|
+
You can actually perform out-of-band work when you receive a <span class="monospaced">:oob_work</span> Phusion Passenger event.
|
4430
|
+
</p>
|
4431
|
+
</li>
|
4432
|
+
</ol></div>
|
4433
|
+
<div class="paragraph"><p>Note that even though you can request out-of-band work, there’s no guarantee that Phusion Passenger will send an <span class="monospaced">oob_work</span> event in a timely manner, if at all. It is also possible that Phusion Passenger sends an <span class="monospaced">oob_work</span> event without you ever having requested one. This latter could for example happen if the OOB work is administrator-initiated. Do not make any assumptions in your code.</p></div>
|
4434
|
+
<div class="paragraph"><p>Here’s an example which implements out-of-band garbage collection using the Out-of-Band framework:</p></div>
|
4435
|
+
<div class="listingblock">
|
4436
|
+
<div class="content">
|
4437
|
+
<!-- Generator: GNU source-highlight 2.11.1
|
4438
|
+
by Lorenzo Bettini
|
4439
|
+
http://www.lorenzobettini.it
|
4440
|
+
http://www.gnu.org/software/src-highlite -->
|
4441
|
+
<pre><tt><span style="font-style: italic"><span style="color: #9A1900"># Somewhere in a controller method:</span></span>
|
4442
|
+
<span style="font-style: italic"><span style="color: #9A1900"># Tell Phusion Passenger we want to perform OOB work.</span></span>
|
4443
|
+
response<span style="color: #990000">.</span>headers<span style="color: #990000">[</span><span style="color: #FF0000">"X-Passenger-Request-OOB-Work"</span><span style="color: #990000">]</span> <span style="color: #990000">=</span> <span style="color: #FF0000">"true"</span>
|
4444
|
+
|
4445
|
+
<span style="font-style: italic"><span style="color: #9A1900"># Somewhere during application initialization:</span></span>
|
4446
|
+
PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>oob_work<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span>
|
4447
|
+
<span style="font-style: italic"><span style="color: #9A1900"># Phusion Passenger has told us that we're ready to perform OOB work.</span></span>
|
4448
|
+
t0 <span style="color: #990000">=</span> Time<span style="color: #990000">.</span>now
|
4449
|
+
GC<span style="color: #990000">.</span>start
|
4450
|
+
Rails<span style="color: #990000">.</span>logger<span style="color: #990000">.</span>info <span style="color: #FF0000">"Out-Of-Bound GC finished in #{Time.now - t0} sec"</span>
|
4451
|
+
<span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre>
|
4452
|
+
</div>
|
4453
|
+
</div>
|
4454
|
+
<div class="paragraph"><p>For your convenience, Phusion Passenger provides a Rack middleware for out-of-band garbage collection. Add this to your <span class="monospaced">config.ru</span>:</p></div>
|
4455
|
+
<div class="listingblock">
|
4456
|
+
<div class="content">
|
4457
|
+
<!-- Generator: GNU source-highlight 2.11.1
|
4458
|
+
by Lorenzo Bettini
|
4459
|
+
http://www.lorenzobettini.it
|
4460
|
+
http://www.gnu.org/software/src-highlite -->
|
4461
|
+
<pre><tt><span style="font-weight: bold"><span style="color: #000080">require</span></span> <span style="color: #FF0000">'phusion_passenger/rack/out_of_band_gc'</span>
|
4462
|
+
|
4463
|
+
<span style="font-style: italic"><span style="color: #9A1900"># Trigger out-of-band GC every 5 requests.</span></span>
|
4464
|
+
use PhusionPassenger<span style="color: #990000">::</span>Rack<span style="color: #990000">::</span>OutOfBandGc<span style="color: #990000">,</span> <span style="color: #993399">5</span></tt></pre>
|
4465
|
+
</div>
|
4466
|
+
</div>
|
4467
|
+
<div class="paragraph"><p>References:</p></div>
|
4468
|
+
<div class="ulist"><ul>
|
4469
|
+
<li>
|
4470
|
+
<p>
|
4471
|
+
<a href="http://blog.phusion.nl/2013/01/22/phusion-passenger-4-technology-preview-out-of-band-work/">The Phusion Blog article which first introduced this feature.</a>
|
4472
|
+
</p>
|
4473
|
+
</li>
|
4474
|
+
</ul></div>
|
4475
|
+
</div>
|
4020
4476
|
</div>
|
4021
4477
|
</div>
|
4022
4478
|
<div class="sect1">
|
4023
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4479
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_under_the_hood"></span><h2 data-comment-topic="under-the-hood-8uney" data-anchor="_under_the_hood">9. Under the hood</h2>
|
4024
4480
|
<div class="sectionbody">
|
4025
4481
|
<div class="paragraph"><p>Phusion Passenger hides a lot of complexity for the end user (i.e. the web server
|
4026
4482
|
system administrator), but sometimes it is desirable to know what is going on.
|
4027
4483
|
This section describes a few things that Phusion Passenger does under the hood.</p></div>
|
4028
4484
|
<div class="sect2">
|
4029
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4485
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_page_caching_support"></span><h3 data-comment-topic="page-caching-support-nafhf6" data-anchor="_page_caching_support">9.1. Page caching support</h3>
|
4030
4486
|
<div class="paragraph"><p>For each HTTP request, Phusion Passenger will automatically look for a corresponding
|
4031
4487
|
page cache file, and serve that if it exists. It does this by appending ".html" to
|
4032
4488
|
the filename that the URI normally maps to, and checking whether that file exists.
|
@@ -4062,7 +4518,7 @@ the <em>public</em> directory. In that case you’ll need to use mod_rewrite to
|
|
4062
4518
|
page cache files.</p></div>
|
4063
4519
|
</div>
|
4064
4520
|
<div class="sect2">
|
4065
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4521
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="application_detection"></span><h3 data-comment-topic="how-phusion-passenger-detects-whether-a-virtual-host-is-a-web-application-13qbmhn" data-anchor="application_detection">9.2. How Phusion Passenger detects whether a virtual host is a web application</h3>
|
4066
4522
|
<div class="paragraph"><p>After you’ve read the deployment instructions you might wonder how Phusion Passenger
|
4067
4523
|
knows that the server root points to a web application that Phusion Passenger is
|
4068
4524
|
able to serve, and how it knows what kind of web application it is (e.g. Rails or Rack).</p></div>
|
@@ -4103,7 +4559,7 @@ Phusion Passenger will look for <em>config.ru</em> instead of <em>config/environ
|
|
4103
4559
|
</div>
|
4104
4560
|
</div>
|
4105
4561
|
<div class="sect1">
|
4106
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4562
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_appendix_a_about_this_document"></span><h2 data-comment-topic="appendix-a-about-this-document-zfvixm" data-anchor="_appendix_a_about_this_document">10. Appendix A: About this document</h2>
|
4107
4563
|
<div class="sectionbody">
|
4108
4564
|
<div class="paragraph"><p>The text of this document is licensed under the
|
4109
4565
|
<a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
|
@@ -4121,10 +4577,10 @@ Attribution-Share Alike 3.0 Unported License</a>.</p></div>
|
|
4121
4577
|
</div>
|
4122
4578
|
</div>
|
4123
4579
|
<div class="sect1">
|
4124
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4580
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_appendix_b_terminology"></span><h2 data-comment-topic="appendix-b-terminology-wzv5ro" data-anchor="_appendix_b_terminology">11. Appendix B: Terminology</h2>
|
4125
4581
|
<div class="sectionbody">
|
4126
4582
|
<div class="sect2">
|
4127
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4583
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="application_root"></span><h3 data-comment-topic="application-root-1fd6bqv" data-anchor="application_root">11.1. Application root</h3>
|
4128
4584
|
<div class="paragraph"><p>The root directory of an application that’s served by Phusion Passenger.</p></div>
|
4129
4585
|
<div class="paragraph"><p>In case of Ruby on Rails applications, this is the directory that contains
|
4130
4586
|
<em>Rakefile</em>, <em>app/</em>, <em>config/</em>, <em>public/</em>, etc. In other words, the directory
|
@@ -4186,17 +4642,17 @@ For example, take the following directory structure:</p></div>
|
|
4186
4642
|
</div>
|
4187
4643
|
</div>
|
4188
4644
|
<div class="sect2">
|
4189
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4645
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="idle_process"></span><h3 data-comment-topic="idle-process-13byfw9" data-anchor="idle_process">11.2. Idle process</h3>
|
4190
4646
|
<div class="paragraph"><p>An "idle process" refers to a process that hasn’t processed any requests for a while.</p></div>
|
4191
4647
|
</div>
|
4192
4648
|
<div class="sect2">
|
4193
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4649
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="inactive_process"></span><h3 data-comment-topic="inactive-process-1d2h0po" data-anchor="inactive_process">11.3. Inactive process</h3>
|
4194
4650
|
<div class="paragraph"><p>An "inactive process" refers to a process that’s current not processing any requests. An idle process is always inactive, but an inactive process is not always considered idle.</p></div>
|
4195
4651
|
</div>
|
4196
4652
|
</div>
|
4197
4653
|
</div>
|
4198
4654
|
<div class="sect1">
|
4199
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4655
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="spawning_methods_explained"></span><h2 data-comment-topic="appendix-c-spawning-methods-explained-tcp8e6" data-anchor="spawning_methods_explained">12. Appendix C: Spawning methods explained</h2>
|
4200
4656
|
<div class="sectionbody">
|
4201
4657
|
<div class="paragraph"><p>At its core, Phusion Passenger is an HTTP proxy and process manager. It spawns
|
4202
4658
|
Ruby on Rails/Rack/WSGI worker processes (which may also be referred to as
|
@@ -4206,7 +4662,7 @@ processes.</p></div>
|
|
4206
4662
|
Let’s go over the different spawning methods. For simplicity’s sake, let’s
|
4207
4663
|
assume that we’re only talking about Ruby on Rails applications.</p></div>
|
4208
4664
|
<div class="sect2">
|
4209
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4665
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_the_most_straightforward_and_traditional_way_direct_spawning"></span><h3 data-comment-topic="the-most-straightforward-and-traditional-way-conservative-spawning-civ29z" data-anchor="_the_most_straightforward_and_traditional_way_direct_spawning">12.1. The most straightforward and traditional way: direct spawning</h3>
|
4210
4666
|
<div class="paragraph"><p>Phusion Passenger could create a new Ruby process, which will then load the
|
4211
4667
|
Rails application along with the entire Rails framework. This process will then
|
4212
4668
|
enter an request handling main loop.</p></div>
|
@@ -4223,7 +4679,7 @@ other hand creates processes that reuse the already loaded Ruby interpreter. In
|
|
4223
4679
|
programmers jargon, Phusion Passenger calls fork(), but not exec().</p></div>
|
4224
4680
|
</div>
|
4225
4681
|
<div class="sect2">
|
4226
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4682
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_the_smart_spawning_method"></span><h3 data-comment-topic="the-smart-spawning-method-7nhgtj" data-anchor="_the_smart_spawning_method">12.2. The smart spawning method</h3>
|
4227
4683
|
<div class="admonitionblock">
|
4228
4684
|
<table><tr>
|
4229
4685
|
<td class="icon">
|
@@ -4244,7 +4700,7 @@ copy-on-write semantics of the virtual memory system on modern operating
|
|
4244
4700
|
systems. As a side effect, the startup time is also reduced. This is technique
|
4245
4701
|
is exploited by Phusion Passenger’s <em>smart</em> spawn method.</p></div>
|
4246
4702
|
<div class="sect3">
|
4247
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4703
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_how_it_works"></span><h4 data-comment-topic="how-it-works-f9umga" data-anchor="_how_it_works">12.2.1. How it works</h4>
|
4248
4704
|
<div class="paragraph"><p>When the <em>smart</em> spawn method is being used, Phusion Passenger will first
|
4249
4705
|
create a so-called <em>ApplicationSpawner server</em> process. This process loads the
|
4250
4706
|
entire Rails application along with the Rails framework, by loading
|
@@ -4285,7 +4741,7 @@ ApplicationSpawner servers have an idle timeout just like worker processes.
|
|
4285
4741
|
</ul></div>
|
4286
4742
|
</div>
|
4287
4743
|
<div class="sect3">
|
4288
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4744
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_summary_of_benefits"></span><h4 data-comment-topic="summary-of-benefits-qovyvk" data-anchor="_summary_of_benefits">12.2.2. Summary of benefits</h4>
|
4289
4745
|
<div class="paragraph"><p>Suppose that Phusion Passenger needs a new worker process for an application
|
4290
4746
|
that uses Rails 2.2.1.</p></div>
|
4291
4747
|
<div class="paragraph"><p>If the <em>smart</em> spawning method is used, and an ApplicationSpawner server
|
@@ -4301,7 +4757,7 @@ gotchas you can easily reap the benefits of smart spawning.</p></div>
|
|
4301
4757
|
</div>
|
4302
4758
|
</div>
|
4303
4759
|
<div class="sect2">
|
4304
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4760
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_smart_spawning_gotcha_1_unintentional_file_descriptor_sharing"></span><h3 data-comment-topic="smart-spawning-gotcha-1-unintentional-file-descriptor-sharing-cebw6q" data-anchor="_smart_spawning_gotcha_1_unintentional_file_descriptor_sharing">12.3. Smart spawning gotcha #1: unintentional file descriptor sharing</h3>
|
4305
4761
|
<div class="paragraph"><p>Because worker processes are created by forking from an ApplicationSpawner
|
4306
4762
|
server, it will share all file descriptors that are opened by the
|
4307
4763
|
ApplicationSpawner server. (This is part of the semantics of the Unix
|
@@ -4337,7 +4793,7 @@ http://www.gnu.org/software/src-highlite -->
|
|
4337
4793
|
database upon creating a new worker process, which is why you normally do not
|
4338
4794
|
encounter any database issues when using smart spawning mode.</p></div>
|
4339
4795
|
<div class="sect3">
|
4340
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4796
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_example_1_memcached_connection_sharing_harmful"></span><h4 data-comment-topic="example-1-memcached-connection-sharing-harmful--1wfs3ad" data-anchor="_example_1_memcached_connection_sharing_harmful">12.3.1. Example 1: Memcached connection sharing (harmful)</h4>
|
4341
4797
|
<div class="paragraph"><p>Suppose we have a Rails application that connects to a Memcached server in
|
4342
4798
|
<em>environment.rb</em>. This causes the ApplicationSpawner to have a socket connection
|
4343
4799
|
(file descriptor) to the Memcached server, as shown in the following figure:</p></div>
|
@@ -4436,7 +4892,7 @@ http://www.gnu.org/software/src-highlite -->
|
|
4436
4892
|
</div>
|
4437
4893
|
</div>
|
4438
4894
|
<div class="sect3">
|
4439
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4895
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_example_2_log_file_sharing_not_harmful"></span><h4 data-comment-topic="example-2-log-file-sharing-not-harmful--ox4yfy" data-anchor="_example_2_log_file_sharing_not_harmful">12.3.2. Example 2: Log file sharing (not harmful)</h4>
|
4440
4896
|
<div class="paragraph"><p>There are also cases in which unintentional file descriptor sharing is not harmful.
|
4441
4897
|
One such case is log file file descriptor sharing. Even if two processes write
|
4442
4898
|
to the log file at the same time, the worst thing that can happen is that the
|
@@ -4448,7 +4904,7 @@ Memcached example, doesn’t help.</p></div>
|
|
4448
4904
|
</div>
|
4449
4905
|
</div>
|
4450
4906
|
<div class="sect2">
|
4451
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4907
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_smart_spawning_gotcha_2_the_need_to_revive_threads"></span><h3 data-comment-topic="smart-spawning-gotcha-2-the-need-to-revive-threads-1ey176o" data-anchor="_smart_spawning_gotcha_2_the_need_to_revive_threads">12.4. Smart spawning gotcha #2: the need to revive threads</h3>
|
4452
4908
|
<div class="paragraph"><p>Another part of the <em>fork()</em> system call’s semantics is the fact that threads
|
4453
4909
|
disappear after a fork call. So if you’ve created any threads in environment.rb,
|
4454
4910
|
then those threads will no longer be running in newly created worker process.
|
@@ -4474,7 +4930,7 @@ http://www.gnu.org/software/src-highlite -->
|
|
4474
4930
|
</div>
|
4475
4931
|
</div>
|
4476
4932
|
<div class="sect2">
|
4477
|
-
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><
|
4933
|
+
<a href="javascript:void(0)" class="comments empty" title="Add a comment"><span class="count"></span></a><span class="anchor_helper" id="_smart_spawning_gotcha_3_code_load_order"></span><h3 data-comment-topic="smart-spawning-gotcha-3-code-load-order-12ydsn8" data-anchor="_smart_spawning_gotcha_3_code_load_order">12.5. Smart spawning gotcha #3: code load order</h3>
|
4478
4934
|
<div class="paragraph"><p>This gotcha is only applicable to the <em>smart</em> spawn method, not the <em>smart-lv2</em>
|
4479
4935
|
spawn method.</p></div>
|
4480
4936
|
<div class="paragraph"><p>If your application expects the Rails framework to be not loaded during the
|
@@ -4497,7 +4953,7 @@ has no effect.</p></div>
|
|
4497
4953
|
<div id="footnotes"><hr></div>
|
4498
4954
|
<div id="footer">
|
4499
4955
|
<div id="footer-text">
|
4500
|
-
Last updated
|
4956
|
+
Last updated 2013-01-23 15:31:31 CET
|
4501
4957
|
</div>
|
4502
4958
|
</div>
|
4503
4959
|
<script>/*! jQuery v1.7.1 jquery.com | jquery.org/license */
|
@@ -4835,6 +5291,7 @@ Mizuho.initializeTopBar = $.proxy(function() {
|
|
4835
5291
|
var isMobileDevice = this.isMobileDevice();
|
4836
5292
|
var timerId;
|
4837
5293
|
|
5294
|
+
// Create the floating table of contents used in the top bar.
|
4838
5295
|
var $floattoc = $('<div id="floattoc"></div>').html($('#toc').html());
|
4839
5296
|
$floattoc.find('#toctitle').remove();
|
4840
5297
|
$floattoc.find('.comments').remove();
|
@@ -4853,6 +5310,8 @@ Mizuho.initializeTopBar = $.proxy(function() {
|
|
4853
5310
|
self.internalLinkClicked(this, event);
|
4854
5311
|
});
|
4855
5312
|
|
5313
|
+
// Callback for when the user clicks on the Table of Contents
|
5314
|
+
// button on the top bar.
|
4856
5315
|
function showFloatingToc() {
|
4857
5316
|
var scrollUpdateTimerId;
|
4858
5317
|
|
@@ -4945,6 +5404,9 @@ Mizuho.initializeTopBar = $.proxy(function() {
|
|
4945
5404
|
$window.bind('scroll', onScroll);
|
4946
5405
|
}
|
4947
5406
|
|
5407
|
+
// Called whenever the user scrolls. Updates the title of the
|
5408
|
+
// Table of Contents button in the top bar to the section that
|
5409
|
+
// the user is currently reading.
|
4948
5410
|
function update() {
|
4949
5411
|
if ($title.offset().top + $title.height() < $document.scrollTop()) {
|
4950
5412
|
if (!$topbar.is(':visible')) {
|
@@ -4988,6 +5450,7 @@ Mizuho.initializeTopBar = $.proxy(function() {
|
|
4988
5450
|
}, 100);
|
4989
5451
|
}
|
4990
5452
|
|
5453
|
+
|
4991
5454
|
if (isMobileDevice) {
|
4992
5455
|
// Mobile devices don't support position fixed.
|
4993
5456
|
$topbar.css('position', 'absolute');
|