passenger 6.0.6 → 6.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +28 -1
- data/CONTRIBUTING.md +1 -1
- data/CONTRIBUTORS +2 -0
- data/bin/passenger-memory-stats +65 -12
- data/passenger.gemspec +1 -1
- data/resources/templates/error_renderer/with_details/dist/bundle.js +1 -1
- data/resources/templates/error_renderer/with_details/src/GetHelpView.jsx +1 -1
- data/resources/templates/standalone/rails_asset_pipeline.erb +1 -1
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -0
- data/src/agent/Core/ApplicationPool/Implementation.cpp +0 -1
- data/src/agent/Core/ApplicationPool/Options.h +9 -0
- data/src/agent/Core/Config.h +2 -1
- data/src/agent/Core/Controller/Config.h +5 -1
- data/src/agent/Core/Controller/InitRequest.cpp +2 -0
- data/src/agent/Core/SpawningKit/Config.h +11 -0
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +13 -0
- data/src/agent/Core/SpawningKit/Spawner.h +1 -0
- data/src/agent/Watchdog/Config.h +2 -1
- data/src/apache2_module/Config.cpp +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +10 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +10 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +25 -0
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +10 -0
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +6 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +26 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +14 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +34 -0
- data/src/cxx_supportlib/Constants.h +3 -2
- data/src/cxx_supportlib/Hooks.h +1 -0
- data/src/cxx_supportlib/vendor-modified/modp_b64_data.h +0 -4
- data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +5 -1
- data/src/helper-scripts/node-loader.js +1 -1
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +7 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
- data/src/nginx_module/Configuration.c +1 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +6 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +14 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
- data/src/nginx_module/ngx_http_passenger_module.c +2 -2
- data/src/ruby_supportlib/phusion_passenger.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/constants.rb +2 -1
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +7 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +2 -2
- metadata +3 -3
@@ -280,6 +280,13 @@ set_manifest_autogenerated_app_conf_defaults(manifest_gen_ctx_t *ctx, PsgJsonVal
|
|
280
280
|
"'smart' for Ruby apps, 'direct' for all other apps",
|
281
281
|
sizeof("'smart' for Ruby apps, 'direct' for all other apps") - 1);
|
282
282
|
|
283
|
+
add_manifest_options_container_static_default_str(ctx,
|
284
|
+
options_container,
|
285
|
+
"passenger_direct_instance_request_address",
|
286
|
+
sizeof("passenger_direct_instance_request_address") - 1,
|
287
|
+
"127.0.0.1",
|
288
|
+
sizeof("127.0.0.1") - 1);
|
289
|
+
|
283
290
|
add_manifest_options_container_static_default_bool(ctx,
|
284
291
|
options_container,
|
285
292
|
"passenger_load_shell_envvars",
|
@@ -685,6 +685,18 @@ passenger_conf_set_spawn_method(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
685
685
|
return ngx_conf_set_str_slot(cf, cmd, conf);
|
686
686
|
}
|
687
687
|
|
688
|
+
static char *
|
689
|
+
passenger_conf_set_direct_instance_request_address(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) {
|
690
|
+
passenger_loc_conf_t *passenger_conf = conf;
|
691
|
+
|
692
|
+
passenger_conf->autogenerated.direct_instance_request_address_explicitly_set = 1;
|
693
|
+
record_loc_conf_source_location(cf, passenger_conf,
|
694
|
+
&passenger_conf->autogenerated.direct_instance_request_address_source_file,
|
695
|
+
&passenger_conf->autogenerated.direct_instance_request_address_source_line);
|
696
|
+
|
697
|
+
return ngx_conf_set_str_slot(cf, cmd, conf);
|
698
|
+
}
|
699
|
+
|
688
700
|
static char *
|
689
701
|
passenger_conf_set_load_shell_envvars(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) {
|
690
702
|
passenger_loc_conf_t *passenger_conf = conf;
|
@@ -1095,7 +1095,7 @@ static char *
|
|
1095
1095
|
passenger_enterprise_only(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) {
|
1096
1096
|
return ": this feature is only available in Phusion Passenger Enterprise. "
|
1097
1097
|
"You are currently running the open source Phusion Passenger. "
|
1098
|
-
"Please learn more about and/or buy Phusion Passenger Enterprise at https://www.phusionpassenger.com/
|
1098
|
+
"Please learn more about and/or buy Phusion Passenger Enterprise at https://www.phusionpassenger.com/features#premium-features ;";
|
1099
1099
|
}
|
1100
1100
|
#endif
|
1101
1101
|
|
@@ -69,6 +69,8 @@ passenger_create_autogenerated_loc_conf(passenger_autogenerated_loc_conf_t *con
|
|
69
69
|
conf->env_vars = NULL;
|
70
70
|
conf->spawn_method.data = NULL;
|
71
71
|
conf->spawn_method.len = 0;
|
72
|
+
conf->direct_instance_request_address.data = NULL;
|
73
|
+
conf->direct_instance_request_address.len = 0;
|
72
74
|
conf->load_shell_envvars = NGX_CONF_UNSET;
|
73
75
|
conf->max_request_queue_size = NGX_CONF_UNSET_UINT;
|
74
76
|
conf->app_type.data = NULL;
|
@@ -172,6 +174,10 @@ passenger_create_autogenerated_loc_conf(passenger_autogenerated_loc_conf_t *con
|
|
172
174
|
conf->spawn_method_source_file.len = 0;
|
173
175
|
conf->spawn_method_source_line = 0;
|
174
176
|
conf->spawn_method_explicitly_set = 0;
|
177
|
+
conf->direct_instance_request_address_source_file.data = NULL;
|
178
|
+
conf->direct_instance_request_address_source_file.len = 0;
|
179
|
+
conf->direct_instance_request_address_source_line = 0;
|
180
|
+
conf->direct_instance_request_address_explicitly_set = 0;
|
175
181
|
conf->load_shell_envvars_source_file.data = NULL;
|
176
182
|
conf->load_shell_envvars_source_file.len = 0;
|
177
183
|
conf->load_shell_envvars_source_line = 0;
|
@@ -159,6 +159,12 @@ passenger_serialize_autogenerated_loc_conf_to_headers(ngx_conf_t *cf, passenger_
|
|
159
159
|
len += sizeof("\r\n") - 1;
|
160
160
|
}
|
161
161
|
|
162
|
+
if (conf->autogenerated.direct_instance_request_address.data != NULL) {
|
163
|
+
len += sizeof("!~PASSENGER_DIRECT_INSTANCE_REQUEST_ADDRESS: ") - 1;
|
164
|
+
len += conf->autogenerated.direct_instance_request_address.len;
|
165
|
+
len += sizeof("\r\n") - 1;
|
166
|
+
}
|
167
|
+
|
162
168
|
if (conf->autogenerated.load_shell_envvars != NGX_CONF_UNSET) {
|
163
169
|
len += sizeof("!~PASSENGER_LOAD_SHELL_ENVVARS: ") - 1;
|
164
170
|
len += conf->autogenerated.load_shell_envvars
|
@@ -417,6 +423,15 @@ passenger_serialize_autogenerated_loc_conf_to_headers(ngx_conf_t *cf, passenger_
|
|
417
423
|
conf->autogenerated.spawn_method.len);
|
418
424
|
pos = ngx_copy(pos, (const u_char *) "\r\n", sizeof("\r\n") - 1);
|
419
425
|
}
|
426
|
+
if (conf->autogenerated.direct_instance_request_address.data != NULL) {
|
427
|
+
pos = ngx_copy(pos,
|
428
|
+
"!~PASSENGER_DIRECT_INSTANCE_REQUEST_ADDRESS: ",
|
429
|
+
sizeof("!~PASSENGER_DIRECT_INSTANCE_REQUEST_ADDRESS: ") - 1);
|
430
|
+
pos = ngx_copy(pos,
|
431
|
+
conf->autogenerated.direct_instance_request_address.data,
|
432
|
+
conf->autogenerated.direct_instance_request_address.len);
|
433
|
+
pos = ngx_copy(pos, (const u_char *) "\r\n", sizeof("\r\n") - 1);
|
434
|
+
}
|
420
435
|
if (conf->autogenerated.load_shell_envvars != NGX_CONF_UNSET) {
|
421
436
|
pos = ngx_copy(pos,
|
422
437
|
"!~PASSENGER_LOAD_SHELL_ENVVARS: ",
|
@@ -291,6 +291,20 @@ generate_config_manifest_for_autogenerated_loc_conf(manifest_gen_ctx_t *ctx, pas
|
|
291
291
|
(const char *) plcf->autogenerated.spawn_method.data,
|
292
292
|
plcf->autogenerated.spawn_method.len);
|
293
293
|
}
|
294
|
+
if (plcf->autogenerated.direct_instance_request_address_explicitly_set) {
|
295
|
+
find_or_create_manifest_app_and_loc_options_containers(ctx,
|
296
|
+
plcf, cscf, clcf, &app_options_container, &loc_options_container);
|
297
|
+
option_container = find_or_create_manifest_option_container(ctx,
|
298
|
+
app_options_container,
|
299
|
+
"passenger_direct_instance_request_address",
|
300
|
+
sizeof("passenger_direct_instance_request_address") - 1);
|
301
|
+
hierarchy_member = add_manifest_option_container_hierarchy_member(option_container,
|
302
|
+
&plcf->autogenerated.direct_instance_request_address_source_file,
|
303
|
+
plcf->autogenerated.direct_instance_request_address_source_line);
|
304
|
+
psg_json_value_set_str(hierarchy_member, "value",
|
305
|
+
(const char *) plcf->autogenerated.direct_instance_request_address.data,
|
306
|
+
plcf->autogenerated.direct_instance_request_address.len);
|
307
|
+
}
|
294
308
|
if (plcf->autogenerated.load_shell_envvars_explicitly_set) {
|
295
309
|
find_or_create_manifest_app_and_loc_options_containers(ctx,
|
296
310
|
plcf, cscf, clcf, &app_options_container, &loc_options_container);
|
@@ -101,6 +101,9 @@ passenger_merge_autogenerated_loc_conf(passenger_autogenerated_loc_conf_t *conf,
|
|
101
101
|
ngx_conf_merge_str_value(conf->spawn_method,
|
102
102
|
prev->spawn_method,
|
103
103
|
NULL);
|
104
|
+
ngx_conf_merge_str_value(conf->direct_instance_request_address,
|
105
|
+
prev->direct_instance_request_address,
|
106
|
+
"127.0.0.1");
|
104
107
|
ngx_conf_merge_value(conf->load_shell_envvars,
|
105
108
|
prev->load_shell_envvars,
|
106
109
|
1);
|
@@ -65,6 +65,7 @@ typedef struct {
|
|
65
65
|
ngx_str_t app_root;
|
66
66
|
ngx_str_t app_start_command;
|
67
67
|
ngx_str_t app_type;
|
68
|
+
ngx_str_t direct_instance_request_address;
|
68
69
|
ngx_str_t document_root;
|
69
70
|
ngx_str_t environment;
|
70
71
|
ngx_str_t group;
|
@@ -90,6 +91,7 @@ typedef struct {
|
|
90
91
|
ngx_str_t base_uris_source_file;
|
91
92
|
ngx_str_t buffer_upload_source_file;
|
92
93
|
ngx_str_t debugger_source_file;
|
94
|
+
ngx_str_t direct_instance_request_address_source_file;
|
93
95
|
ngx_str_t document_root_source_file;
|
94
96
|
ngx_str_t enabled_source_file;
|
95
97
|
ngx_str_t env_vars_source_file;
|
@@ -142,6 +144,7 @@ typedef struct {
|
|
142
144
|
ngx_uint_t base_uris_source_line;
|
143
145
|
ngx_uint_t buffer_upload_source_line;
|
144
146
|
ngx_uint_t debugger_source_line;
|
147
|
+
ngx_uint_t direct_instance_request_address_source_line;
|
145
148
|
ngx_uint_t document_root_source_line;
|
146
149
|
ngx_uint_t enabled_source_line;
|
147
150
|
ngx_uint_t env_vars_source_line;
|
@@ -194,6 +197,7 @@ typedef struct {
|
|
194
197
|
ngx_int_t base_uris_explicitly_set;
|
195
198
|
ngx_int_t buffer_upload_explicitly_set;
|
196
199
|
ngx_int_t debugger_explicitly_set;
|
200
|
+
ngx_int_t direct_instance_request_address_explicitly_set;
|
197
201
|
ngx_int_t document_root_explicitly_set;
|
198
202
|
ngx_int_t enabled_explicitly_set;
|
199
203
|
ngx_int_t env_vars_explicitly_set;
|
@@ -43,9 +43,9 @@
|
|
43
43
|
|
44
44
|
#define MODP_B64_DONT_INCLUDE_BOOST_ENDIANNESS_HEADERS
|
45
45
|
#if NGX_HAVE_LITTLE_ENDIAN
|
46
|
-
#define
|
46
|
+
#define BOOST_ENDIAN_LITTLE_BYTE
|
47
47
|
#else
|
48
|
-
#define
|
48
|
+
#define BOOST_ENDIAN_BIG_BYTE
|
49
49
|
#endif
|
50
50
|
|
51
51
|
#include "ngx_http_passenger_module.h"
|
@@ -31,7 +31,7 @@ module PhusionPassenger
|
|
31
31
|
|
32
32
|
PACKAGE_NAME = 'passenger'
|
33
33
|
# Run 'rake src/cxx_supportlib/Constants.h configkit_schemas_inline_comments' after changing this number.
|
34
|
-
VERSION_STRING = '6.0.
|
34
|
+
VERSION_STRING = '6.0.7'
|
35
35
|
|
36
36
|
# Tip: find the SHA-256 with ./dev/nginx_version_sha2 <VERSION>
|
37
37
|
PREFERRED_NGINX_VERSION = '1.18.0'
|
@@ -258,7 +258,7 @@ module PhusionPassenger
|
|
258
258
|
end
|
259
259
|
|
260
260
|
|
261
|
-
private
|
261
|
+
private
|
262
262
|
def self.infer_install_spec
|
263
263
|
filename = ENV['PASSENGER_LOCATION_CONFIGURATION_FILE']
|
264
264
|
return filename if filename && !filename.empty?
|
@@ -444,6 +444,12 @@ APACHE2_CONFIGURATION_OPTIONS = [
|
|
444
444
|
:desc => 'The spawn method to use.',
|
445
445
|
:function => 'cmd_passenger_spawn_method'
|
446
446
|
},
|
447
|
+
{
|
448
|
+
:name => 'PassengerDirectInstanceRequestAddress',
|
449
|
+
:type => :string,
|
450
|
+
:default => DEFAULT_BIND_ADDRESS,
|
451
|
+
:desc => 'The address that Passenger binds to in order to allow sending HTTP requests to individual application processes.'
|
452
|
+
},
|
447
453
|
{
|
448
454
|
:name => 'PassengerFriendlyErrorPages',
|
449
455
|
:type => :flag,
|
@@ -58,6 +58,7 @@ module PhusionPassenger
|
|
58
58
|
DEFAULT_WEB_APP_USER = "nobody"
|
59
59
|
DEFAULT_APP_ENV = "production"
|
60
60
|
DEFAULT_SPAWN_METHOD = "smart"
|
61
|
+
DEFAULT_BIND_ADDRESS = "127.0.0.1"
|
61
62
|
# Apache's unixd.h also defines DEFAULT_USER, so we avoid naming clash here.
|
62
63
|
PASSENGER_DEFAULT_USER = "nobody"
|
63
64
|
DEFAULT_CONCURRENCY_MODEL = "process"
|
@@ -116,7 +117,7 @@ module PhusionPassenger
|
|
116
117
|
PROGRAM_WEBSITE = "https://www.phusionpassenger.com"
|
117
118
|
PROGRAM_AUTHOR = "Phusion"
|
118
119
|
SUPPORT_URL = "https://www.phusionpassenger.com/support"
|
119
|
-
ENTERPRISE_URL = "https://www.phusionpassenger.com/
|
120
|
+
ENTERPRISE_URL = "https://www.phusionpassenger.com/features#premium-features"
|
120
121
|
GLOBAL_NAMESPACE_DIRNAME = PhusionPassenger::GLOBAL_NAMESPACE_DIRNAME_
|
121
122
|
# Subdirectory under $HOME to use for storing stuff.
|
122
123
|
USER_NAMESPACE_DIRNAME = PhusionPassenger::USER_NAMESPACE_DIRNAME_
|
@@ -317,7 +317,11 @@ module PhusionPassenger
|
|
317
317
|
elsif ActiveRecord::Base.respond_to?(:clear_active_connections!)
|
318
318
|
ActiveRecord::Base.clear_active_connections!
|
319
319
|
end
|
320
|
-
|
320
|
+
begin
|
321
|
+
ActiveRecord::Base.establish_connection
|
322
|
+
rescue
|
323
|
+
DebugLogging.debug('ActiveRecord is not configured, start it yourself')
|
324
|
+
end
|
321
325
|
end
|
322
326
|
|
323
327
|
# Fire off events.
|
@@ -476,6 +476,12 @@ NGINX_CONFIGURATION_OPTIONS = [
|
|
476
476
|
:dynamic_default => "'smart' for Ruby apps, 'direct' for all other apps",
|
477
477
|
:type => :string
|
478
478
|
},
|
479
|
+
{
|
480
|
+
:name => 'passenger_direct_instance_request_address',
|
481
|
+
:scope => :application,
|
482
|
+
:default => DEFAULT_BIND_ADDRESS,
|
483
|
+
:type => :string
|
484
|
+
},
|
479
485
|
{
|
480
486
|
:name => 'passenger_load_shell_envvars',
|
481
487
|
:scope => :application,
|
@@ -890,7 +890,7 @@ module PhusionPassenger
|
|
890
890
|
# On macOS >= 10.13 High Sierra /usr/include no longer
|
891
891
|
# exists.
|
892
892
|
xcode_prefix = `/usr/bin/xcode-select -p`.strip
|
893
|
-
["-I#{xcode_prefix}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/apr-1" \
|
893
|
+
["-I#{xcode_prefix}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/apr-1 " \
|
894
894
|
"-I#{xcode_prefix}/SDKs/MacOSX.sdk/usr/include/apr-1",
|
895
895
|
'-laprutil-1']
|
896
896
|
else
|
@@ -99,7 +99,7 @@ module PhusionPassenger
|
|
99
99
|
if should_use_unix_sockets?
|
100
100
|
@main_socket_address, @main_socket = create_unix_socket_on_filesystem(options)
|
101
101
|
else
|
102
|
-
@main_socket_address, @main_socket = create_tcp_socket
|
102
|
+
@main_socket_address, @main_socket = create_tcp_socket(options)
|
103
103
|
end
|
104
104
|
@server_sockets[:main] = {
|
105
105
|
:address => @main_socket_address,
|
@@ -109,7 +109,7 @@ module PhusionPassenger
|
|
109
109
|
:accept_http_requests => true
|
110
110
|
}
|
111
111
|
|
112
|
-
@http_socket_address, @http_socket = create_tcp_socket
|
112
|
+
@http_socket_address, @http_socket = create_tcp_socket(options)
|
113
113
|
@server_sockets[:http] = {
|
114
114
|
:address => @http_socket_address,
|
115
115
|
:socket => @http_socket,
|
@@ -309,16 +309,17 @@ module PhusionPassenger
|
|
309
309
|
end
|
310
310
|
end
|
311
311
|
|
312
|
-
def create_tcp_socket
|
313
|
-
# We
|
312
|
+
def create_tcp_socket(options)
|
313
|
+
# We default to "127.0.0.1" as address in order to force
|
314
314
|
# TCPv4 instead of TCPv6.
|
315
|
-
|
315
|
+
bind_address = options.fetch('bind_address', '127.0.0.1')
|
316
|
+
socket = TCPServer.new(bind_address, 0)
|
316
317
|
socket.listen(BACKLOG_SIZE)
|
317
318
|
socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
318
319
|
socket.binmode
|
319
320
|
socket.sync = true
|
320
321
|
socket.close_on_exec!
|
321
|
-
socket_address = "tcp
|
322
|
+
socket_address = "tcp://#{bind_address}:#{socket.addr[1]}"
|
322
323
|
return [socket_address, socket]
|
323
324
|
end
|
324
325
|
|
@@ -258,6 +258,13 @@ module PhusionPassenger
|
|
258
258
|
:default => PlatformInfo.ruby_supports_fork? ? DEFAULT_SPAWN_METHOD : 'direct',
|
259
259
|
:desc => 'The spawn method to use. Default: see docs'
|
260
260
|
},
|
261
|
+
{
|
262
|
+
:name => :direct_instance_request_address,
|
263
|
+
:type => :hostname,
|
264
|
+
:type_desc => 'HOST',
|
265
|
+
:default => '127.0.0.1',
|
266
|
+
:desc => "The address that Passenger binds to in order to allow sending HTTP requests to individual application processes.\nDefault: %DEFAULT%"
|
267
|
+
},
|
261
268
|
{
|
262
269
|
:name => :static_files_dir,
|
263
270
|
:type => :path,
|
@@ -231,7 +231,7 @@ module PhusionPassenger
|
|
231
231
|
abort "The '#{option_name}' feature is only available in #{PROGRAM_NAME} " +
|
232
232
|
"Enterprise. You are currently running the open source #{PROGRAM_NAME}. " +
|
233
233
|
"Please learn more about and/or buy #{PROGRAM_NAME} Enterprise at " +
|
234
|
-
"https://www.phusionpassenger.com/
|
234
|
+
"https://www.phusionpassenger.com/features#premium-features"
|
235
235
|
end
|
236
236
|
end
|
237
237
|
|
@@ -240,7 +240,7 @@ module PhusionPassenger
|
|
240
240
|
abort "The '#{option_name}' feature is only available in #{PROGRAM_NAME} " +
|
241
241
|
"Enterprise. You are currently running the open source #{PROGRAM_NAME}. " +
|
242
242
|
"Please learn more about and/or buy #{PROGRAM_NAME} Enterprise at " +
|
243
|
-
"https://www.phusionpassenger.com/
|
243
|
+
"https://www.phusionpassenger.com/features#premium-features"
|
244
244
|
end
|
245
245
|
end
|
246
246
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passenger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.
|
4
|
+
version: 6.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Phusion - http://www.phusion.nl/
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -4445,7 +4445,7 @@ homepage: https://www.phusionpassenger.com/
|
|
4445
4445
|
licenses: []
|
4446
4446
|
metadata:
|
4447
4447
|
bug_tracker_uri: https://github.com/phusion/passenger/issues
|
4448
|
-
changelog_uri: https://github.com/phusion/passenger/blob/stable-6.0
|
4448
|
+
changelog_uri: https://github.com/phusion/passenger/blob/stable-6.0/CHANGELOG
|
4449
4449
|
documentation_uri: https://www.phusionpassenger.com/docs/
|
4450
4450
|
homepage_uri: https://www.phusionpassenger.com/
|
4451
4451
|
source_code_uri: https://github.com/phusion/passenger
|