主页

索引

模块索引

搜索页面

4.5.6. rebar常见问题

rebar转rebar3时erldydtl不编译问题:

说明: 此事发重现象很诡异
   我在测试时,一直都没有问题,但9.29上线pvt发现网站打不开
   好像其他部门反应系统也出现了问题,于是急急停了
   当我在测试机重复上线的步骤时也出现了同样的问题
   很是奇怪,测试时一直没有发现
   于是,转而处理erlydtl的问题,于是发现rebar设置的hook不可用了
    {provider_hooks, [  %% hook钩子
      {post, [{compile, {erlydtl, compile}}]}
    ]}.
    手工执行rebar3 erlydtl compile后好了,但使用
    {% extends "base.dtl" %}
    在base.dtl文件里的
    {% load erlydtl_custom_tags %}
    {% rendMenuPage user %}
    没有执行
奇怪的是:
  新建的项目用同样的rebar.config就没有问题
进展:
  1.我在另一机器上重新clone项目时,编译运行就没有问题
  2.我在同一机器上重新clone项目时,编译运行也没有问题

  于是我找2边的不同,从rebar转到rebar3有多几个文件
  1.deps/
  2.ebin/
  当我把此2目录移走再运行,就好了
原因:
  1.erlydtl在编译时如果有此beam文件就不再编译
  2.erlydtl默认增加当前目录的ebin目录

修改deps项目中的文件不编译:

直接修改_build/default/lib目录中项目的源文件
在顶层make,默认不编译
rebar3就是这样,我认为也是合理的
解决办法:
1.1 删除对应的beam文件,重新编译
1.2 走一遍升级流程

deps项目lager_transform没有执行:

原因:
需要在用lager的deps项目中增加rebar.config文件
并加上:
{erl_opts, [
  {parse_transform, lager_transform}
]}.

主页

索引

模块索引

搜索页面