riak的用户库模块加载问题

阅读更多
基于riak core/pipe构建自己的应用时会遇到如何加载自己的应用模块的问题。在此收集一些常用方法备忘。


指定用户自定义模块的路径

编译好的erlang模块由 Erlang code server负责加载到Erlang运行时。code server可以在启动时自动加载基本库模块,也可以在运行时动态加载模块。

当调用某个函数时,如果该函数所在模块没有装载,则code server会自动的装载该模块。

code server会维护一个代码搜索路径(code path),它会在这个路径中搜索erlang模块代码。
code:get_path()可以查看这个搜索路径。
这个路径可以通过code:add_path/1, code:add_patha/1, code:add_pathz/1, code:add_pathsa/1, code:add_pathsz/1等函数修改,(注意a是第一个字母,z是最后一个字母,分别表示新路径添加在最前头,新路径添加在最后头)



code
1.
在riak操作手册《 A little riak book》第3章Developers,第2节Buckets的 Hooks小节提到了一种添加用户库路径的办法,修改app.config
{riak_kv,
    ...
    {add_paths, ["../custom"]}
}

custom目录

在 在线文档:安装用户定制代码中对此有更详细的介绍。

2.
一种是在crdt cookbook中提到一种手工添加应用库路径的办法:
https://github.com/basho/riak_crdt_cookbook/blob/master/counters/README.md#loading-our-module-into-riak


3。
在vm.args中添加启动参数-pa或者-pz, 指定用户加载erlang模块所在的路径。

4.
加载模块并向所有连接节点广播:c:nl(Module)
http://erlang.org/doc/man/c.html#nl-1

你可能感兴趣的:(riak)