我的代码如下:
import Config
# config :logger, :console, format: "[$level] $metadata$message\n",
# metadata: [:module, :function, :my_id]
config Mechanics,
ptz_port: "tty.usbserial-1410",
ptz_speed: 115200,
ptz_check_interval: 5000 ptz_port已从“tty.usbSeries-1420”改为“tty.usbSeries-1410”
iex(16)> Application.get_all_env(Mechanics)
[
ptz_check_interval: 5000,
imu_speed: 115200,
ptz_port: "tty.usbserial-1430",
testkey1: "value1",
imu_port: "tty.usbserial-1420",
ptz_speed: 115200,
imu_pose: "horizon",
imu_check_interval: 5000,
key2: "value2"
] 当我试图通过调用Config.config_env()更新配置时,错误如下所示。在iex中可以通过命令更新配置而不退出它吗?
iex(18)> Config.config_env()
** (RuntimeError) could not set configuration via Config. This usually means you are trying to execute a configuration file directly, instead of reading it with Config.Reader
(elixir 1.13.4) lib/config.ex:91: Config.raise_improper_use!/0
(elixir 1.13.4) lib/config.ex:190: Config.__env__!/0发布于 2022-07-24 02:58:35
在编译时读取config.exs。如果希望在启动应用程序时读取值,则可以将值放入runtime.exs中。除了一些必须在编译时配置的技术异常之外,运行时值将覆盖编译时值--也许这就是ptz_port值被重写的方式。
在这两种情况下,值都被读入应用程序的进程字典中,因此它们可以在运行时被读取和修改(例如,当您在iex会话中时)。例如,您可以:
Application.put_env(Mechanics, ptz_speed: 4567)有一个Application.put_all_env/2函数,但是为了这个目的重用现有的配置文件可能会遇到困难。
https://stackoverflow.com/questions/73093921
复制相似问题