我的测试模块的目标是开始存储我在本地节点中自己输入的数据。
我在计算机上设置了一个本地节点。我还通过riak attach为它添加了一个新的erlang模块。
在我的模块test.erl中,到目前为止只有riakConnect函数:
riakConnect() ->
riakc_pb_socket:start_link("127.0.0.1", 8087).
我在同一模块中也有一个接收部件,看起来类似于(现在已注释掉):
riakReceive() ->
receive
{store, Bucket, Key, Value} ->
...
end.
问题在于,当我附加文件时,我到达节点的控制台,该控制台说riakc_pb_socket:start_link()未定义,实际上没有任何反应。
我认为我在这里遗漏了一些信息。
答案 0 :(得分:1)
您是否在路径中使用riakc_pb_socket
运行节点?如果您查看repo's readme,则必须使用已编译的erlang二进制文件(erl
路径
$ erl -pa $PATH_TO_RIAKC/ebin $PATH_TO_RIAKC/deps/*/ebin
如果您在Erlang shell中,则可以验证是否能够使用l(ModuleName).
函数加载模块。您可以使用code:get_path().
检查您的路径(在哪里查找二进制文件)。您也可以修改它(添加新目录),但作为一般规则,您应该具有正确的VM启动脚本/命令。
最后,如果你开发自己的应用程序(我认为你是),你可以查看像rebar这样的工具。你可以在那里描述所有的依赖项,比如你的erlang-riak客户端,他会帮助你下载和编译它们。有了这个,你可以用简单的
来实现你的VMerl -pa ebin -pa deps/*/ebin
评论后编辑
Riak只是另一个应用程序,使用Erlang,你实际上可以将wright连接到它。只是在工作生产的东西。但这很危险,或者可能。你应该离开Riak。至少它是内部的。特别是Riak为您提供了良好的稳定接口,可以从外部连接到它。
让我们这样做。我们将使您的Riaks节点运行,并编写另一个应用程序,它将会#34;说"它。要说话,我们将使用basho本身的riak-erlang client。
第一步是使用rebar build tool创建开发环境。徘徊getting started guide
$ mkdir myapp
$ cd myapp
$ wget https://raw.github.com/wiki/rebar/rebar/rebar && chmod u+x rebar
$ rebar create-app appid=myapp
除了少数其他文件,您现在拥有src
文件夹,您可以(并将)放置自定义模块。您可以检查它是否使用./rebar compile
命令进行编译。所有已编译的文件都将位于bin
文件夹中(与src
相同)并且将具有.beam
扩展名(就像java具有.java
)。
我们需要的另一件事就是精确的库。我们需要riakc_pb_socket.beam
从riakc_pb_socket
模块运行任何内容。最简单的方法是下载源代码并编译它们。由于我们使用钢筋来制造东西,所以很容易。
我们将创建rebar.config
文件并使用依赖项
{deps, [{ riakc, ".*" ,
{git, "https://github.com/basho/riak-erlang-client.git", {branch, "1."}}}
]}.
下载并编译
$ ./rebar get-deps compile
现在你应该能够启动新的Erlang VM,给它起一个名字,添加你的酒厂的路径(从自定义模块和依赖项)和shell运行你的代码。
$ erl -sname myapp -pa ebin -pa deps/*/ebin
(myapp@localhost) 1> custom_module:riakConnect().
它应该通过。
如果您想直接从系统控制台运行一些代码,请查看erl -run
或escript。
这应该让你去。