diff options
author | Oisin Canty <o.canty@f5.com> | 2021-07-02 12:57:55 +0000 |
---|---|---|
committer | Oisin Canty <o.canty@f5.com> | 2021-07-02 12:57:55 +0000 |
commit | 655e321075c0beebe14eba83deeac1ba4c9e0b29 (patch) | |
tree | cb3fb16282bd571e6636f19e77199518264fdadd /src/nxt_application.h | |
parent | 7d2bc04e391f9216fb4e0464cb43c9c438f7e034 (diff) | |
download | unit-655e321075c0beebe14eba83deeac1ba4c9e0b29.tar.gz unit-655e321075c0beebe14eba83deeac1ba4c9e0b29.tar.bz2 |
Ruby: process and thread lifecycle hooks.
This feature allows one to specify blocks of code that are called when certain
lifecycle events occur. A user configures a "hooks" property on the app
configuration that points to a script. This script will be evaluated on boot
and should contain blocks of code that will be called on specific events.
An example of configuration:
{
"type": "ruby",
"processes": 2,
"threads": 2,
"user": "vagrant",
"group": "vagrant",
"script": "config.ru",
"hooks": "hooks.rb",
"working_directory": "/home/vagrant/unit/rbhooks",
"environment": {
"GEM_HOME": "/home/vagrant/.ruby"
}
}
An example of a valid "hooks.rb" file follows:
File.write("./hooks.#{Process.pid}", "hooks evaluated")
on_worker_boot do
File.write("./worker_boot.#{Process.pid}", "worker booted")
end
on_thread_boot do
File.write("./thread_boot.#{Process.pid}.#{Thread.current.object_id}",
"thread booted")
end
on_thread_shutdown do
File.write("./thread_shutdown.#{Process.pid}.#{Thread.current.object_id}",
"thread shutdown")
end
on_worker_shutdown do
File.write("./worker_shutdown.#{Process.pid}", "worker shutdown")
end
This closes issue #535 on GitHub.
Diffstat (limited to '')
-rw-r--r-- | src/nxt_application.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/nxt_application.h b/src/nxt_application.h index 45e7fa48..6fbdc4be 100644 --- a/src/nxt_application.h +++ b/src/nxt_application.h @@ -74,6 +74,7 @@ typedef struct { typedef struct { nxt_str_t script; uint32_t threads; + nxt_str_t hooks; } nxt_ruby_app_conf_t; |