我在iex>中更新我的@doc测试它的外观。我遇到的问题是我必须退出iex才能查看更新的@doc文档。有没有办法在使用r()?
时重新加载模块@doc变量iex -S mix
iex> h Coordinate.island/1
## Examples
iex> {:ok, coord } = Cordinate.start_link
Cordinate.island(coord)
:falls_town
更新@doc以返回:none而不是:falls_town并保存文件。
iex> r(Coordinate)
iex> h Coordinate.island/1
# issue: still showing the old @doc example
## Examples
iex> {:ok, coord } = Cordinate.start_link
Cordinate.island(coord)
:falls_town # should be :none
答案 0 :(得分:5)
h/1
currently loads the documentation from the compiled .beam files。 r/1
编译内存中的文件并且不会将.beam文件写入磁盘,这意味着h/1
在您运行r/1
时不会重新加载文档:
当我们在IEx中重新加载模块时,我们重新编译模块源代码, 在内存中更新其内容。磁盘中的原始.beam文件, 可能是模块的第一个定义来自的那个, 根本不会改变。
您可以通过在recompile/0
中运行iex
(而不是r/1
)来编译程序包并将生成的.beam文件写入磁盘。运行之后,您应该在h/1
。