Description
Related dev. issue(s): tarantool/tarantool#9986
Related doc. issue(s): #4191
Product: Tarantool
Since: 3.2
Root document: https://www.tarantool.io/en/doc/latest/reference/reference_lua/console/
SME: @ Totktonada
There are built-in modules that are frequently used for administration
or debugging purposes. It is convenient to have them accessible in the
interactive console without extra actions.
They're accessible now without a manual require
call if the
console_session_scope_vars
compat option is set to new
(see also
#4191).
The list of the autorequired modules is below.
- clock
- compat
- config
- datetime
- decimal
- ffi
- fiber
- fio
- fun
- json
- log
- msgpack
- popen
- uuid
- varbinary
- yaml
See tarantool/tarantool#9986 for motivation behind this feature.
This list forms so called initial environment for an interactive console
session. The default initial environment may be adjusted by an
application, for example, to include application specific administrator
functions.
Two public functions are added for this purpose: console.initial_env()
and console.set_initial_env(env)
.
Example 1 (keep autorequired modules, but add one more variable):
local console = require('console')
-- Add myapp_info function.
local initial_env = console.initial_env()
initial_env.myapp_info = function()
<...>
end
Example 2 (replace the whole initial environment):
local console = require('console')
-- Add myapp_info function, discard the autorequired modules.
console.set_initial_env({
myapp_info = function()
<...>
end,
})
The console.set_initial_env()
call without an argument or with a nil
argument drops the initial environment to its default.
A modification of the initial environment doesn't affect existing
console sessions. It affects console sessions that are created
after the modification.
Please, adjust the console_session_scope_vars
compat option
description and extend the built-in console
module reference with the
new functions.
Requested by @Totktonada in tarantool/tarantool@8c9965a (tarantool/tarantool#9986, tarantool/tarantool#10014).