标签: elixir

不使用 pheonix 时启用开发热重载的最佳方法是什么?

所以我正在学习 Elixir 和 Pheonix 看起来太多而无法开始学习,所以我使用 Plug and Poison 制作了一个简单的 JSON Rest API,但要查看任何更改,我需要停止服务器并mix run --no-halt再次运行。我来自nodeJS,它只nodemon跟踪依赖于根模块的所有文件,并在看到任何更改时重新加载整个服务器。有没有类似的 mix 或 Elixir 的东西?我知道您可以使用 OTP 重新加载代码的特定部分,如果我的服务器在保存时执行此操作,那就最好了,但现在我只想更快地响应我所做的事情。有人能指出我正确的方向吗?

elixir-mix elixir plug

0
推荐指数
1
解决办法
1209
查看次数

Elixir:模式匹配结构的函数参数

使用{:typed_struct, "~> 0.2.1"}库我有以下结构:

  defmodule RequestParams do
    use TypedStruct
    typedstruct do
      field :code, String.t()
      field :name, String.t()
    end
  end
Run Code Online (Sandbox Code Playgroud)

我正在尝试将函数参数模式匹配到结构:

def do_handle(params %RequestParams{}, _context) do
# instead of
# def do_handle(%{ "code" => code, "name" => name}, _context) do
Run Code Online (Sandbox Code Playgroud)

但我得到例外:

cannot find or invoke local params/2 inside match. Only macros can be
invoked in a match and they must be defined before their invocation.
Run Code Online (Sandbox Code Playgroud)

怎么了?是否有可能将函数参数与结构相匹配?

struct elixir pattern-matching

0
推荐指数
1
解决办法
3302
查看次数

在 Elixir 中,如何格式化相对于现在的日期时间?

我记得找到了一些可以让您将 DateTime 转换为“in 1 hour”之类的字符串的东西,但到目前为止我的搜索结果是空的。

elixir

0
推荐指数
1
解决办法
821
查看次数

如何获取请求 HTTPPoison 发送查询字符串

我需要通过传递查询字符串来进入 api,以防路由是:

api/v1/servers/#{server_name}/zones
Run Code Online (Sandbox Code Playgroud)

查询参数rrsets=false和代码:

HTTPoison.get!("api/v1/servers/#{server_name}/zones")
Run Code Online (Sandbox Code Playgroud)

如何使用查询字符串发送?

elixir httpoison

0
推荐指数
1
解决办法
1255
查看次数

HTTPoison 遵循重定向

有一个公共 API 可以在浏览器中完美运行并返回 JSON 响应,但使用最新版本的 Httpoision 它无法按预期工作:

HTTP(GET):https://yts.lt/api/v2/list_movies.json ?query_term=tt11296058

 {:ok,
 %HTTPoison.Response{
   body: "",
   headers: [
     {"Date", "Tue, 22 Jun 2021 11:42:20 GMT"},
     {"Transfer-Encoding", "chunked"},
     {"Connection", "keep-alive"},
     {"Cache-Control", "max-age=3600"},
     {"Expires", "Tue, 22 Jun 2021 12:42:20 GMT"},
     {"Location",
      "https://yts.mx/api/v2/list_movies.json?query_term=tt11296058"},
     {"cf-request-id", "0ad5205cb800004da508b04000000001"},
     {"Expect-CT",
      "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""},
     {"Report-To",
      "{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v2?s=O80%2B5KfZ6d3G3Fz0NBGlep%2BetzQAvaUDIvVW09DUB2QMtJpd1XxupK621LhGR8EqiOsOY%2B55BdaHAljyLCEumHyb0rHSqk526jMQ5NxuLUi%2FVdbX\"}],\"group\":\"cf-nel\",\"max_age\":604800}"},
     {"NEL", "{\"report_to\":\"cf-nel\",\"max_age\":604800}"},
     {"Server", "cloudflare"},
     {"CF-RAY", "663536745c654da5-BOM"},
     {"alt-svc",
      "h3-27=\":443\"; ma=86400, h3-28=\":443\"; ma=86400, h3-29=\":443\"; ma=86400, h3=\":443\"; ma=86400"}
   ],
   request: %HTTPoison.Request{
     body: "",
     headers: [],
     method: :get,
     options: [],
     params: %{},
     url: "https://yts.lt/api/v2/list_movies.json?query_term=tt11296058"
   },
   request_url: "https://yts.lt/api/v2/list_movies.json?query_term=tt11296058",
   status_code: 301 …
Run Code Online (Sandbox Code Playgroud)

redirect elixir httpoison

0
推荐指数
1
解决办法
1120
查看次数

从列表内的结构中获取值

我有一个列表如下

[
  %Photos{
    url: "http://localhost:4000/test/img",
    user: "localhost:4000/test/img/123"}]
Run Code Online (Sandbox Code Playgroud)

如何获得"localhost:4000/test/img/123"字符串形式的结果?

谁能帮我这个?

提前致谢。

elixir

0
推荐指数
1
解决办法
767
查看次数

安全连接长生不老药列表?

如何nil在 Elixir 中安全地串联列表?

\n

我已经提供了一些情况和响应的内联示例++

\n

看起来nil在连接时被视为一个特殊实体。

\n

为什么会出现这种情况?

\n
# Append two empty list \xe2\x9c\x85\niex(1)> [] ++ []\n[]\n# Append empty list to nil \xe2\x9d\x8c\niex(2)> [] ++ nil\nnil # Result should be []\n# Append non empty list to nil \xe2\x9d\x8c\niex(3)> [1] ++ nil\n[1 | nil] # Result should be [1]\n# Append non empty list to nil and enumerate \xe2\x9d\x8c\niex(5)> a = [1, 2] ++ nil\n[1, 2 | nil]\niex(6)> Enum.each(a, fn p -> IO.puts(p) end)\n1\n2\n** (FunctionClauseError) …
Run Code Online (Sandbox Code Playgroud)

list concatenation elixir

0
推荐指数
1
解决办法
645
查看次数

Bash sha256 与 erlang one 不匹配

当我“sha256”时,Erlang 返回的结果与 bash 命令不同。

echo a | sha256sum, returns: 87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7  -
Run Code Online (Sandbox Code Playgroud)

埃尔兰

    Bin = crypto:hash(sha256, "a").


<<202,151,129,18,202,27,189,202,250,194,49,179,154,35,220,
      77,167,134,239,248,20,124,78,114,185,128,119,133,175,
      238,72,187>>
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的二进制到十六进制, 但没有一个给出我期望的结果。

我得到这个结果:

    bin_to_hex:bin_to_hex(Bin).
<<"CA978112CA1BBDCAFAC231B39A23DC4DA786EFF8147C4E72B9807785AFEE48BB">>
Run Code Online (Sandbox Code Playgroud)

erlang cryptography elixir erlang-otp sha256

0
推荐指数
1
解决办法
202
查看次数

在 for 循环内更新 MapSet 时 Elixir 中的奇怪行为

list1 = [2,3,4]
map22 = MapSet.new()
map22 = MapSet.put(map22,25)
for i <- list1 do
  map22 = MapSet.put(map22,i)
end
IO.puts("The updated map is #{inspect(map22)}")
Run Code Online (Sandbox Code Playgroud)

当我运行上面的程序时,我发现 for 循环中的更新根本不起作用。为什么会这样呢?

elixir

0
推荐指数
1
解决办法
153
查看次数

使用 Elixir 中的 Ecto 测试 repo 类中的覆盖率

我在 Elixir 中有一个非常简单的应用程序,它使用 Ecto 在 Postgres 上的表中运行 SELECT 查询。\n表名称是“person”,有 2 列:“name”和“age”。

\n

这是应用程序:

\n
/ecto_app\n |-application.ex\n |-repo.ex\n
Run Code Online (Sandbox Code Playgroud)\n

应用程序.ex:

\n
defmodule EctoApp.Application do\n\n  use Application\n\n  require Logger\n\n  @impl true\n  def start(_type, _args) do\n    children = [\n      EctoApp.Repo\n    ]\n\n    opts = [strategy: :one_for_one, name: EctoApp.Supervisor]\n    Logger.debug("Starting Ecto App")\n    Supervisor.start_link(children, opts)\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n

回购协议:

\n
defmodule EctoApp.Repo do\n  use Ecto.Repo,\n    otp_app: :ecto_app,\n    adapter: Ecto.Adapters.Postgres\n\n  import Ecto.Query\n\n  require Logger\n\n\n  def get_people() do\n    query = from p in "person",\n            select: [p.name, p.age]\n    result= EctoApp.Repo.all(query)\n …
Run Code Online (Sandbox Code Playgroud)

postgresql unit-testing elixir ecto

0
推荐指数
1
解决办法
362
查看次数