小编Afs*_*ami的帖子

Phoenix + ExMachina错误

我正在按照本教程进行操作,在添加此代码和角色Factory之后,我收到以下错误:

15:09:08.808 [错误] GenServer #PID <0.245.0>终止**(UndefinedFunctionError)函数Ecto.Adapters.SQL.begin_test_transaction/1未定义或私有.你是说其中一个:

  * in_transaction?/1

(ecto) Ecto.Adapters.SQL.begin_test_transaction(Pxblog.Repo)
(elixir) src/elixir_compiler.erl:125: :elixir_compiler.dispatch_loaded/6
(elixir) src/elixir_lexical.erl:17: :elixir_lexical.run/3
(elixir) src/elixir_compiler.erl:30: :elixir_compiler.quoted/3
(elixir) lib/code.ex:363: Code.require_file/2
(elixir) lib/enum.ex:651: Enum."-each/2-lists^foreach/1-0-"/2
(elixir) lib/enum.ex:651: Enum.each/2
(mix) lib/mix/tasks/test.ex:216: Mix.Tasks.Test.run/1
Run Code Online (Sandbox Code Playgroud)

这是我的test_helper.exs文件:

{:ok, _} = Application.ensure_all_started(:ex_machina)
ExUnit.start

Mix.Task.run "ecto.create", ~w(-r Pxblog.Repo --quiet)
Mix.Task.run "ecto.migrate", ~w(-r Pxblog.Repo --quiet)
Ecto.Adapters.SQL.begin_test_transaction(Pxblog.Repo)
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?我已经更新了所有的依赖项mix deps.update --all.

提前致谢!

elixir web phoenix-framework

4
推荐指数
1
解决办法
632
查看次数

如何通过用户代理切换布局

我正在使用 Phoenix 框架创建一个网站。

我想根据用户使用 PC 还是智能手机使用不同的布局和模板。

所以,我想通过检查用户代理来切换布局和模板。

检查用户代理和切换布局和模板的最佳方法是什么?或者,你知道有什么有用的库可以做到这一点吗?

elixir phoenix-framework

4
推荐指数
1
解决办法
1471
查看次数

如何将字符串转换为Elixir中的Ecto.DateTime?

我需要将包含有效UTC时间的字符串转换为一个字符串Ecto.DateTime,稍后我将以正确的格式将其插入到我的数据库中.我尝试过使用该Ecto.DateTime.cast(date)方法,但似乎没有用.该字符串Sat Aug 04 11:48:27 +0000 2012来自Twitter API.

我知道有些像Timex这样的库我还没有检查过.Elixir中是否有任何简单易用的解决方案?

datetime elixir ecto phoenix-framework

4
推荐指数
1
解决办法
4187
查看次数

Phoenix使用连接和预加载数据渲染json

我想渲染json与foreign_key相关的两个模型(Event和Activity).

在控制器中,我执行此查询:

def all_nested(conn, %{"event_id" => id}) do
  event = Repo.get! nested_all_query, id
  render(conn, "show_all.json", event: event)
end

defp nested_all_query do
  from event in Event,
    left_join: activities in assoc(event, :activities),
    preload: [activities: activities]
end
Run Code Online (Sandbox Code Playgroud)

当我在iex控制台上尝试该查询时,查询返回正确的结果,并且它内部有一个Activity的"活动"数组.

然后,渲染时,我在视图上有这个代码:

def render("show_all.json", %{event: event}) do
  render_one(event, Project.EventView, "event_all.json")
end

def render("event.json", %{event: event}) do
  %{id: event.id,
    name: event.name,
    description: event.description,
    num_participants: event.num_participants,
    minimum_age: event.minimum_age,
    price: event.price,
    date_start: event.date_start,
    date_end: event.date_end,
    reg_date_open: event.reg_date_open,
    reg_date_close: event.reg_date_close,
    rules: event.rules}
end

def render("event_all.json", %{event: event}) do
   render("event.json", %{event: …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

4
推荐指数
1
解决办法
472
查看次数

ecto:如何通过选择另一个联接的列来预加载记录

有什么方法可以通过选择另一个联接的列来预加载记录?

# table structure
# User 1---* Post 1---* PostTag *---1 Tag

# extract definition of scheme
scheme "posts" do
 ...
 has_many :post_tags, PostTag
 has_many :tags, [:post_tags, :tag]
end
Run Code Online (Sandbox Code Playgroud)

以下伪代码表达了我的目标(但不起作用)。

query = from post in Post,
  join: user in User, on post.user_id == user.id,
  select: %{
    id: post.id,
    title: post.title,
    user_name: user.name, # <= column at joined table
  },
  preload: [:tags]
Repo.all(query)
#=> ** (Ecto.QueryError) the binding used in `from` must be selected in `select` when using `preload` in query:` …
Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

4
推荐指数
1
解决办法
1535
查看次数

如何使用HtmlUnit获取HTML页面

我知道你可能认为这个问题很愚蠢,但我需要使用HtmlUnit.但是,它以XML或文本形式返回页面.

我不知道如何获得纯HTML(与浏览器返回的源代码相同)

我需要这个,因为我需要使用一些书面模块.有任何想法吗?

java htmlunit

3
推荐指数
1
解决办法
2万
查看次数

为巨大的文件加载数据infile(没有警告,没有错误,没有受影响的行)

我尝试了以下脚本:

LOAD DATA LOCAL INFILE 'myfile.csv'
    REPLACE INTO TABLE `mydb`.`mytable`
    CHARACTER SET latin1 FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES (`field1`, `field1`, `field1`, `field1`, `field1`, `field1`);
Run Code Online (Sandbox Code Playgroud)

当我使用500K记录的文件时,它可以正常工作,但是当我尝试400万条记录的csv文件时,它会返回:

Query OK, 0 rows affected (2.79 sec) 
Records: 0  Deleted: 0  Skipped: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

当然,在2.70秒内不会添加任何内容!

我的RAM是4GB,我的输入文件(大文件)是370MB.

谁有人建议解决方案?

mysql csv file-io

3
推荐指数
1
解决办法
4234
查看次数

Elixir:如果服务器重启,如何保持 OTP 队列?

我正在使用 OTP 来管理事件队列:

defmodule ParrotApi.MatchingSupervisor do
  use Supervisor

  ## Callbacks

  def start_link() do
    Supervisor.start_link(__MODULE__, [])
  end

  def init(_) do
    children = [
      worker(ParrotApi.MatchingServer, []), # TODO: State is gone if this crashes

      # Supervise connections
      supervisor(Registry, [:unique, :connection_registry]),
      supervisor(ParrotApi.ConnectionSupervisor, []),
    ]

    supervise(children, strategy: :one_for_one)
  end
end
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果服务器重新启动,我的队列会发生什么?重新启动后我需要它继续存在。据我所知,它存储在内存中,因此如果服务器重新启动,它就会被擦除。

elixir erlang-otp phoenix-framework

3
推荐指数
1
解决办法
988
查看次数

如何使Ecto.changeset validate_required接受空白值?

我要做的是将一个空字符串作为字段的值传递,并验证它是否为nil.问题是validate_required会在nil和空值上引发错误.如何让它接受空白值?

模式

  schema "messages" do
    field :user_id, :string
    field :text, :string

    timestamps()
  end
Run Code Online (Sandbox Code Playgroud)

变更

  def changeset(struct, params \\ %{}) do
    struct
    |> cast(params, [:text, :user_id])
    |> validate_required([:text, :user_id])
  end
Run Code Online (Sandbox Code Playgroud)

erlang elixir changeset ecto phoenix-framework

3
推荐指数
1
解决办法
1327
查看次数

使用 Elixir/Phoenix 调用 API 端点

我试用了 sportradar API。我真的不关心运动,但我正在尝试学习一些凤凰和灵药。我正在尝试做一些超级基本的事情,但似乎无法实现。基本上,我尝试使用给定的参数构建一个 URL 并调用 API 端点。返回响应并用返回的内容填充视图。这就是我所坚持的。

控制器

def index(conn, _params) do
  render(conn, "index.html")
end

def find_games(conn, params) do
  response = params["find_games"]["calender"]


end
Run Code Online (Sandbox Code Playgroud)

我基本上想说此时打电话https://api.sportradar.us/nba/trial/v4/en/games/response["day]/response["month"]/response["year"]/schedule.json?api_key={api_key}

如何使用 Elixir 和 Phoenix 发出 http 请求?

elixir phoenix-framework

3
推荐指数
1
解决办法
7200
查看次数