标签: phoenix-framework

在Ecto中按DateTime查询

这是我尝试过的.

date = Ecto.DateTime.from_erl(:calendar.universal_time())
query |> where([record], record.deadline >= ^date)
Run Code Online (Sandbox Code Playgroud)

我也试过了

date = Ecto.DateTime.from_erl(:calendar.universal_time())
query = from m in MyApp.SomeModel,
      where: m.deadline >= ^date,
      select: m
Run Code Online (Sandbox Code Playgroud)

两者都返回相同的消息

value `%Ecto.DateTime{..}` in `where` cannot be cast to type :datetime in query
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我应该在我的查询中使用Ecto.DateTime.也许我错过了一些明显的东西?谢谢!

elixir ecto phoenix-framework

9
推荐指数
1
解决办法
3163
查看次数

Poison Encode编码嵌套模型

燮,

我正在尝试编码一些嵌套的Ecto模型,但我遇到了一个问题.我意识到我不能对卸载的模型进行编码,我希望有可能只选择一个结构而不加载休息,同时有可能选择整个树.

我用defimpl的方法,例如:

defimpl Poison.Encoder, for: Hangman.MasterCat do
    def encode(page, _options) do
      %{
        id: page.id,
        name: page.name,
        categories: page.categories
      } |> Poison.Encoder.encode([])
    end
  end
defimpl Poison.Encoder, for: Hangman.Category do
    def encode(category, _options) do
      IO.inspect(category.words)
      %{
        id: category.id,
        name: category.name,
        words: category.words
      } |> Poison.Encoder.encode([])
    end
  end
defimpl Poison.Encoder, for: Hangman.Word do
    def encode(page, _options) do
      %{
        content: page.content
      } |> Poison.Encoder.encode([])
    end
  end
Run Code Online (Sandbox Code Playgroud)

这适用于整个结构,但它不适用于仅选择MasterCats并且它会产生这样的错误.

cannot encode association :categories from Hangman.MasterCat to JSON because the association was not loaded. Please make …
Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

9
推荐指数
1
解决办法
2204
查看次数

在Phoenix框架中的插件内重定向

我正在尝试编写一个Plug会对用户进行身份验证(实际检查会话).我无法获得重定向路由.我认为这是因为路由生成在激活此插件后发生.

无论如何我得到这样的错误: undefined function TestApp.page_path/2

在常规背景下,page_path/2显然存在并且有效.

defmodule TestApp.Plugs.Authenticate do
  import Plug.Conn

  def init(default), do: default

  def call(conn, _)  do
    user = Plug.Conn.get_session(conn, :current_user)
    if not is_nil(user) do
      assign(conn, :user, user)
    else
      conn
      |> Phoenix.Controller.put_flash(:warning, "User is not authenticated.")
      |> Phoenix.Controller.redirect(to: TestApp.page_path(conn, :index))
      |> halt
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

9
推荐指数
1
解决办法
4291
查看次数

使用插头在凤凰城进行特定操作

如何使用插头对凤凰的具体操作.想要使用插件进行某些操作的场景,或者相反,希望在某些操作中使用插件

elixir phoenix-framework

9
推荐指数
1
解决办法
3566
查看次数

如何在凤凰框架中获取当前的url

我想知道目前使用elixir/phoenix框架的网址,我怎么能得到这个?

编辑#1:

我的nginx配置文件:

server {
        client_max_body_size 100M;

        listen  80;

        server_name *.babysittingbordeaux.dev *.babysittingparis.dev

        access_log  /usr/local/var/log/nginx/baby-access.log;
        error_log   /usr/local/var/log/nginx/baby-error.log;


        location / {
            proxy_pass http://127.0.0.1:4000;
        }
}
Run Code Online (Sandbox Code Playgroud)

码:

Atom.to_string(conn.scheme) <> "://" <> (Enum.into(conn.req_headers, %{}) |> Map.get("host")) <> conn.request_path
Run Code Online (Sandbox Code Playgroud)

那个例子返回http://127.0.0.1:4000/,我想得到http://www.babysittingbordeaux.dev/

我正处于开发模式.

elixir phoenix-framework

9
推荐指数
3
解决办法
5844
查看次数

尝试创建数据库时出错 - Ecto - Phoenix

我在尝试创建数据库时遇到错误.我安装了postgres,我已经成功完成了一些测试项目.而且,我没有看到这个错误.任何帮助都会很棒:

错误:

 ~/Desktop/elixir/restore $ mix ecto.create
** (Mix) The database for Restore.Repo couldn't be created: tcp connect: connection refused - :econnrefused

21:52:23.978 [error] GenServer #PID<0.150.0> terminating
** (Postgrex.Error) tcp connect: connection refused - :econnrefused
    (db_connection) lib/db_connection/connection.ex:148: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:623: Connection.enter_connect/5
    (stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol
Run Code Online (Sandbox Code Playgroud)

postgresql elixir ecto phoenix-framework

9
推荐指数
2
解决办法
3263
查看次数

Elixir和Ecto中的DateTime.now

我想在没有第三方库的情况下获得Phoenix/Elixir的当前日期时间戳.或者简单地说,我想要类似的东西DateTime.now().我怎样才能做到这一点?

elixir ecto phoenix-framework

9
推荐指数
2
解决办法
7040
查看次数

Edeliver在随机TCP端口上启动Phoenix/Elixir应用程序

我们正在尝试将我们的Phoenix Web App部署到Linux VM(在我们的Azure案例中)使用edeliver 我们已经使用Azure部署了一个"基本"博客应用程序,edeliver记录了以下步骤:https: //github.com/dwyl/learn-微软蔚蓝#部分2 -部署-您的应用程序

当我们手动运行(" ")的应用程序:https://github.com/nelsonic/healthlocker 使用上的实例MIX_ENV=prod mix phoenix.server运行良好!

当我们使用以下命令将应用程序部署并运行到Azure实例时:

mix edeliver build release --verbose
mix edeliver deploy release to production
mix edeliver start production
Run Code Online (Sandbox Code Playgroud)

我们收到一条肯定的确认消息:

EDELIVER HEALTHLOCKER WITH START COMMAND

-----> starting production servers

production node:

  user    : root
  host    : 51.140.86.5
  path    : /home/hladmin
  response: ok


START DONE!
Run Code Online (Sandbox Code Playgroud)

但是当我们netstat -plnt按照check-running-services-on-linux的 …

deployment elixir azure phoenix-framework edeliver

9
推荐指数
1
解决办法
158
查看次数

将操作推送到消息队列以便在需要时进行处理

我的头衔不是很好,因为我发现很难用小片段来解释我想要的东西......所以我会深入尝试!

我正在使用Phoenix Web框架编写Elixir应用程序.

我想要做的是:

  • 调用一个web路由,凤凰处理并传递给控制器
  • 控制器用于启动要切换到消息队列的进程
  • 资源可用时要处理的队列中的最新项(即CPU /内存/等)

该过程不需要返回到Web路由(即其异步)

我知道如何通过使用消息队列(Beanstalk,RabbitMQ,sidekiq)来处理其他语言,并将"作业"交给工作人员,然后编写工作人员来处理队列中的作业.

但是......我知道在Elixir中它默认排队,因为所有内容都被推入"邮箱"(在YouTube视频中看到它:p)

但是我找不到任何合适的代码示例来说明如何让控制器(在phoenix中)产生一个异步进程,该进程将在消息队列中处理.

有没有人知道任何体面的资源,显示我正在寻找什么,或者是否有人有任何代码片段,将给我一个基本的描述如何做到这一点.

谢谢 :)

编辑:

正如评论中所提到的,我已经创建了一个基本教程,介绍如何在Elixir应用程序中启动和运行Poolboy.我希望它对人们有用(并且正确!):)

https://github.com/thestonefox/elixir_poolboy_example

elixir phoenix-framework

8
推荐指数
2
解决办法
2225
查看次数

如何在Phoenix Framework中创建全局视图?

如果我想创建一个模块,其中包含可以在每个模板中访问的函数,并且我可以使用该视图的所有功能(创建标记,使用路由器路径等),那么实现该功能的最佳方法是什么?

简而言之,我如何创建全局视图?

elixir phoenix-framework

8
推荐指数
1
解决办法
1571
查看次数

标签 统计

elixir ×10

phoenix-framework ×10

ecto ×4

azure ×1

deployment ×1

edeliver ×1

postgresql ×1