我正在使用“钢筋外壳”来测试我的应用程序。这被记录为:
使用预加载的项目和dep启动shell,类似于 ‘'erl -pa ebin -pa deps/*/ebin’。
如何在底层调用'erl‘中添加额外的args?例如,我希望添加特定于应用程序的环境变量,并运行一个模块/函数。我想引用这样的话:
erl -pa ebin -pa deps/*/ebin -browser_spy browser_exe "/my/dir" -run bs_example test(我希望code:priv_dir能像使用rebar shell时那样工作,而上面的“erl”命令没有这样做)。
发布于 2015-10-27 20:15:59
你不能
rebar shell实际上并不执行erl ...命令,但只尝试复制其行为。
实际上,钢筋只是将自己变成了shell,并通过使用-pa添加路径来模拟code:add_pathz。
有关实现细节,请参见这里:
shell(_Config,_AppFile) -> true = code:add_pathz(rebar_utils:ebin_dir()),%扫描所有进程是否具有对旧用户的引用,并将它们保存到以后的% update %update中: NeedsUpdate ()、proplists:get_value(group_leader、erlang:process_info( Pid )) == whereis( user )、%%终止当前用户ok = supervisor:terminate_child(kernel_sup,user),%%启动一个新的shell (这也会在正确的组下启动一个新用户)_= user_drv:start(),%等待直到注册了user_drv和用户(最多3秒) ok = wait_until_user_started(3000),%%设置任何引用旧用户组领导的进程到%%新用户进程_=erlang:group_leader(whereis(用户),Pid) \x{e76f}\x{e76f}>- NeedsUpdate,%%启用error_logger的tty输出ok = error_logger:swap_handler(tty),%%禁用简单的error_logger(可能已经添加了多次%% )。最多移除init添加的error_logger和tty处理程序添加的% error_logger %= remove_error_handler(3),%此调用永远不会返回(直到用户退出shell)计时器:睡眠(无限)。
https://stackoverflow.com/questions/33377262
复制相似问题