标签: phoenix-framework

获取当前环境名称

在Phoenix Framework中,如何获取当前环境的名称?

我已经尝试过用env变量读取变量了System.get_env("MIX_ENV"),但是并不总是设置值.

elixir phoenix-framework

24
推荐指数
3
解决办法
6145
查看次数

如何在Phoenix框架中使用SASS/SCSS?

在使用Phoenix Framework时,有没有办法在样式表中使用sass/scss?如果有,那怎么样?

phoenix-framework

23
推荐指数
4
解决办法
7565
查看次数

在凤凰项目中放置辅助函数的位置?

在凤凰/ elixir项目中:什么是放置辅助函数的好地方.例如:我使用Timex来处理日期,但我必须对返回的结构进行一些转换,以便将它与我的数据库驱动程序一起使用(一个使用密钥:min,另一个:分钟等).我不想在每个模型中重复这段代码,而是编写一个简单的函数来完成它.什么是一个好地方放这个?只是在/ lib文件夹中的模块中?有没有关于如何组织这个的指导方针?

elixir phoenix-framework

23
推荐指数
1
解决办法
2718
查看次数

如何使Elixir混合测试输出更加详细?

在我的Elixir/Phoenix应用程序中,当我跑步时

mix test
Run Code Online (Sandbox Code Playgroud)

我输出如下:

$ mix test
....

Finished in 0.09 seconds
4 tests, 0 failures
Run Code Online (Sandbox Code Playgroud)

每个测试成功的点数.

如何输出成功的测试名称?

在使用rspec的Rails中,我曾经在目录中使用.rspec文件执行此操作,该文件看起来像:

$ cat .rspec
--color
-fd
--tty
Run Code Online (Sandbox Code Playgroud)

Elixir中是否有相同的名称?

testing elixir-mix verbosity elixir phoenix-framework

23
推荐指数
2
解决办法
5043
查看次数

如何在Ecto中更改字段类型?

我有一个架构:

schema "editables" do
    field :title, :string
    field :content, :string

    timestamps
  end
Run Code Online (Sandbox Code Playgroud)

现在我想将一个字段表单的类型更改:integer:binary.编写迁移的正确方法是什么,因为使用add不起作用......?

def change do
    alter table(:editables) do
      add :title, :binary
      add :content, :binary

      timestamps
    end
  end
Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

22
推荐指数
1
解决办法
8007
查看次数

适配器Ecto.Adapters.Postgres未编译

我无法创建我的凤凰项目.会喜欢一些关于如何修复它的建议.

设置细节:

  • Ubuntu 16.04.4 LTS
  • Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
  • Elixir 1.7.3(使用Erlang/OTP 20编译)
  • 混合1.7.3(用Erlang/OTP 20编译)
  • Ecto v3.0.0

我正在关注Phoenix Up and Running制作应用程序.

mix phx.new hello
cd hello
mix ecto.create
Run Code Online (Sandbox Code Playgroud)

最后一个命令给了我:

 == Compilation error in file lib/hello/repo.ex ==
 ** (ArgumentError) adapter Ecto.Adapters.Postgres was not compiled, ensure it is correct and it is included as a project dependency
     lib/ecto/repo/supervisor.ex:71: Ecto.Repo.Supervisor.compile_config/2
     lib/hello/repo.ex:2: (module)
     (stdlib) erl_eval.erl:680: :erl_eval.do_apply/6
     (elixir) lib/kernel/parallel_compiler.ex:206: anonymous fn/4 in Kernel.ParallelCompiler.spawn_workers/6
Run Code Online (Sandbox Code Playgroud)

我安装了postgres.我有postgres超级用户.

postgresql elixir ecto phoenix-framework

22
推荐指数
2
解决办法
2991
查看次数

设置Phoenix Framework和Ecto以使用UUID:如何插入生成的值?

几天前,我开始使用Elixir和Phoenix Framework(v 0.12.0)和Postgres数据库.我正在尝试创建一个具有UUID主键的表,我更喜欢顺序默认值.

在使用mix phoenix.gen.html生成模型和迁移文件并遵循Phoenix文档中的其他步骤之后,我已经更改了

def model do
    quote do
      use Ecto.Model
    end
  end
Run Code Online (Sandbox Code Playgroud)

web.ex

def model do
  quote do
    use Ecto.Model
    @primary_key {:id, :uuid, []}
    @foreign_key_type :uuid
  end
end
Run Code Online (Sandbox Code Playgroud)

正如Ecto文档中提到的那样.我也将迁移更改为

create table(:tblname, primary_key: false) do
  add :id, :uuid, primary_key: true
  [other columns]
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试从自动生成的表单向表中添加一个条目时,我收到一个错误,因为它id是null.如果我手动将id-column 添加到模型中,则会收到列已存在的错误.如果我忽略设置primary_key为false table/2并删除id列,则使用顺序id列生成表.

我是否需要id在变更集中手动设置,或者在设置我的应用程序以使用UUID时出错?提前致谢

postgresql elixir ecto phoenix-framework

21
推荐指数
2
解决办法
6834
查看次数

Phoenix - 无效的CSRF(跨站点伪造保护)令牌错误

尝试更新(或创建)记录时,我收到无效的CSRF令牌错误.我正在使用Elixir v1.0.3,Erlang/OTP 17 [erts-6.3]和Phoenix v0.8.0(我想,我不知道如何查看Phoenix的版本).我正在创建一个Web应用程序,主要遵循Phoenix指南和Elixir Dose Jobsite示例资源.但是,当我尝试从html表单发布信息时,我收到无效的CSRF令牌错误.根据错误中给出的建议,我将'x-csrf-token':csrf_token添加到操作中.

edit.html.eex:

<h2>Edit Directory</h2>
<form class="form-horizontal" action="<%= directory_path @conn, :update, @directory.id, 'x-csrf-token': @csrf_token %>" method="post">
  <div class="form-group">
    <label for="directory" class="col-sm-2 control-label">Directory</label>
    <div class="col-sm-10">
      <input type="hidden" name="_method" value="PATCH">
      <input type="text" class="form-control" value="<%= @directory.directory %>" name="directory" placeholder="Directory" required="required">
    </div>
  </div>
...
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

[error] #PID<0.579.0> running Ainur.Endpoint terminated
Server: localhost:4000 (http)
Request: POST /config/directories/2?x-csrf-token=
** (exit) an exception was raised:
    ** (Plug.CSRFProtection.InvalidCSRFTokenError) Invalid CSRF (Cross Site Forgery Protection) token. Make sure that all your non-HEAD and non-GET …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

20
推荐指数
3
解决办法
9352
查看次数

我应该使用哪种OTP行为来"无休止"重复任务?

我希望在凤凰应用程序旁边反复运行相同的操作序列(当然,如果某些东西在工作者中刹车,则不会崩溃整个网络应用程序)并且我真的不知道我应该使用GenServer,Elixir的任务,代理人或者我到目前为止没有想过的完全不同的东西.

当我启动我的凤凰应用程序时,工作人员也应该启动,定期拉出一些串行连接值,通过凤凰频道广播它们,收集它们直到@save_interval达到然后计算中位数,通过不同的频道广播中位数和将它写入InfluxDB.现在我有这样的东西(有点工作):

def do_your_thing(serial_pid) do
  Stream.interval(@interval_live)
    |> get_new_values_from_serial(serial_pid)
    |> broadcast!("live-channel:#{@name}")
    |> Enum.take(div(@interval_save, @interval_live))
    |> calculate_medians()
    |> broadcast!("update-channel:#{@name}")
    |> write_to_database()

  do_your_thing(serial_pid) # repeat
end
Run Code Online (Sandbox Code Playgroud)

我只是开始想出所有OTP的东西,并希望你们中的某些人可以帮助我在这里绊倒正确的方向.

elixir erlang-otp phoenix-framework

20
推荐指数
1
解决办法
1856
查看次数

凤凰:渲染其他文件夹的模板

我的web/templates文件夹中有两个模板文件夹:

> ls web/templates
personal_info       user
Run Code Online (Sandbox Code Playgroud)

我想要的是user在另一个视图中从文件夹渲染一些模板personal_info.所以我在路径上有一个文件:web/templates/personal_info/index.html.eex,我有以下内容:

<%= render "user/xyz.html" %>
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

[error] #PID<0.821.0> running MyApp.Endpoint terminated
Server: localhost:4000 (http)
Request: GET /
** (exit) an exception was raised:
    ** (Phoenix.Template.UndefinedError) Could not render "user/xyz.html" for MyApp.PersonalInfoView, please define a matching clause for render/1 or define a template at "web/templates/personal_info". The following templates were compiled:

* index.html
Run Code Online (Sandbox Code Playgroud)

请告诉我如何渲染在其他文件夹中定义的模板,我尝试了几个排列,但没有一个工作.

templates elixir web-deployment phoenix-framework

20
推荐指数
1
解决办法
5988
查看次数