diff --git a/plugins/rack/rack_plugin.c b/plugins/rack/rack_plugin.c index ecf11b70..42245e62 100644 --- a/plugins/rack/rack_plugin.c +++ b/plugins/rack/rack_plugin.c @@ -6,18 +6,18 @@ struct uwsgi_rack ur; struct uwsgi_option uwsgi_rack_options[] = { -/* - {"rails", required_argument, 0, LONG_ARGS_RAILS}, - {"rack", required_argument, 0, LONG_ARGS_RACK}, - {"ruby-gc-freq", required_argument, 0, LONG_ARGS_RUBY_GC_FREQ}, - {"rb-gc-freq", required_argument, 0, LONG_ARGS_RUBY_GC_FREQ}, - {"rb-require", required_argument, 0, LONG_ARGS_RUBY_REQUIRE}, - {"ruby-require", required_argument, 0, LONG_ARGS_RUBY_REQUIRE}, - {"rbrequire", required_argument, 0, LONG_ARGS_RUBY_REQUIRE}, - {"rubyrequire", required_argument, 0, LONG_ARGS_RUBY_REQUIRE}, - {"require", required_argument, 0, LONG_ARGS_RUBY_REQUIRE}, - {"rbshell", optional_argument, 0, LONG_ARGS_RUBY_SHELL}, -*/ + {"rails", required_argument, 0, "load a rails <= 2.x app", uwsgi_opt_set_str, &ur.rails, UWSGI_OPT_POST_BUFFERING}, + {"rack", required_argument, 0, "load a rack app", uwsgi_opt_set_str, &ur.rack, UWSGI_OPT_POST_BUFFERING}, + {"ruby-gc-freq", required_argument, 0, "set ruby GC frequency", uwsgi_opt_set_int, &ur.gc_freq, 0}, + {"rb-gc-freq", required_argument, 0, "set ruby GC frequency", uwsgi_opt_set_int, &ur.gc_freq, 0}, + + {"rb-require", required_argument, 0, "import/require a ruby module/script", uwsgi_opt_add_string_list, &ur.rbrequire, 0}, + {"ruby-require", required_argument, 0, "import/require a ruby module/script", uwsgi_opt_add_string_list, &ur.rbrequire, 0}, + {"rbrequire", required_argument, 0, "import/require a ruby module/script", uwsgi_opt_add_string_list, &ur.rbrequire, 0}, + {"rubyrequire", required_argument, 0, "import/require a ruby module/script", uwsgi_opt_add_string_list, &ur.rbrequire, 0}, + {"require", required_argument, 0, "import/require a ruby module/script", uwsgi_opt_add_string_list, &ur.rbrequire, 0}, + + {"rbshell", optional_argument, 0, "run a ruby/irb shell", uwsgi_opt_true, &ur.rb_shell, 0}, {0, 0, 0, 0, 0, 0 ,0}, @@ -735,31 +735,6 @@ void uwsgi_rack_after_request(struct wsgi_request *wsgi_req) { log_request(wsgi_req); } -int uwsgi_rack_manage_options(int i, char *optarg) { - - - switch(i) { - case LONG_ARGS_RAILS: - // HACK: can be overridden with --post-buffering - if (!uwsgi.post_buffering) uwsgi.post_buffering = 4096; - ur.rails = optarg; - return 1; - case LONG_ARGS_RACK: - // HACK: can be overridden with --post-buffering - if (!uwsgi.post_buffering) uwsgi.post_buffering = 4096; - ur.rack = optarg; - return 1; - case LONG_ARGS_RUBY_GC_FREQ: - ur.gc_freq = atoi(optarg); - return 1; - case LONG_ARGS_RUBY_REQUIRE: - uwsgi_string_new_list(&ur.rbrequire, optarg); - return 1; - } - - return 0; -} - void uwsgi_rack_suspend(struct wsgi_request *wsgi_req) { uwsgi_log("SUSPENDING RUBY\n"); diff --git a/plugins/rack/uwsgi_rack.h b/plugins/rack/uwsgi_rack.h index 5ba0c789..829181d5 100644 --- a/plugins/rack/uwsgi_rack.h +++ b/plugins/rack/uwsgi_rack.h @@ -2,13 +2,6 @@ #include -#define LONG_ARGS_RACK_BASE 17000 + ((7 + 1) * 100) -#define LONG_ARGS_RAILS LONG_ARGS_RACK_BASE + 1 -#define LONG_ARGS_RUBY_GC_FREQ LONG_ARGS_RACK_BASE + 2 -#define LONG_ARGS_RACK LONG_ARGS_RACK_BASE + 3 -#define LONG_ARGS_RUBY_SHELL LONG_ARGS_RACK_BASE + 4 -#define LONG_ARGS_RUBY_REQUIRE LONG_ARGS_RACK_BASE + 5 - #ifndef RUBY19 #include #define rb_errinfo() ruby_errinfo diff --git a/utils.c b/utils.c index 68b7e066..8faba342 100644 --- a/utils.c +++ b/utils.c @@ -1811,6 +1811,10 @@ void add_exported_option(char *key, char *value, int configured) { if (op->flags & UWSGI_OPT_NO_SERVER) { uwsgi.no_server = 1; } + // requires post_buffering ? + if (op->flags & UWSGI_OPT_POST_BUFFERING) { + if (!uwsgi.post_buffering) uwsgi.post_buffering = 4096; + } // immediate ? if (op->flags & UWSGI_OPT_IMMEDIATE) { op->func(key, value, op->data); diff --git a/uwsgi.h b/uwsgi.h index c90326ac..9e7dcd7f 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -37,17 +37,18 @@ extern "C" { #define ushared uwsgi.shared -#define UWSGI_OPT_IMMEDIATE (1 << 0) -#define UWSGI_OPT_MASTER (1 << 1) -#define UWSGI_OPT_LOG_MASTER (1 << 2) -#define UWSGI_OPT_THREADS (1 << 3) -#define UWSGI_OPT_CHEAPER (1 << 4) -#define UWSGI_OPT_VHOST (1 << 5) -#define UWSGI_OPT_MEMORY (1 << 6) -#define UWSGI_OPT_PROCNAME (1 << 7) -#define UWSGI_OPT_LAZY (1 << 8) -#define UWSGI_OPT_NO_INITIAL (1 << 9) -#define UWSGI_OPT_NO_SERVER (1 << 10) +#define UWSGI_OPT_IMMEDIATE (1 << 0) +#define UWSGI_OPT_MASTER (1 << 1) +#define UWSGI_OPT_LOG_MASTER (1 << 2) +#define UWSGI_OPT_THREADS (1 << 3) +#define UWSGI_OPT_CHEAPER (1 << 4) +#define UWSGI_OPT_VHOST (1 << 5) +#define UWSGI_OPT_MEMORY (1 << 6) +#define UWSGI_OPT_PROCNAME (1 << 7) +#define UWSGI_OPT_LAZY (1 << 8) +#define UWSGI_OPT_NO_INITIAL (1 << 9) +#define UWSGI_OPT_NO_SERVER (1 << 10) +#define UWSGI_OPT_POST_BUFFERING (1 << 11) #define MAX_APPS 64 #define MAX_GENERIC_PLUGINS 64