标签: elixir

如何从Elixir shell获取Erlang函数的帮助

在iex中,我无法获得内置Erlang函数的帮助,例如:

iex(1)> h :lists.reverse
:lists was not compiled with docs
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?

erlang elixir

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

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

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

我正在使用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
查看次数

无法在Windows命令提示符或git bash中运行iex

我刚刚在我的Windows 7机器上通过chocolatey安装了elixir.在C目录的根目录下,在管理员命令提示符下,我运行:

c:\> cinst elixir
Run Code Online (Sandbox Code Playgroud)

这成功安装了erlang和elixir - v.1.0.4.没有失败,所有成功的消息.然后我重新启动命令提示符并运行

c:\> iex.bat
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

'iex.bat'未被识别为内部或外部命令,可操作程序或批处理文件.

我经常运行一台mac,所以当谈到Windows时我很无知.也尝试iex在git bash中运行,但没有运气.我如何运行iex?

elixir chocolatey

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

Phoenix + Addict - POST操作上的CrossDomain错误

我正在尝试使用addict包在我的项目中进行身份验证,但每当我尝试执行操作(注册,登录...)时,我的POST都会收到CrossDomain错误.

我已经尝试添加cors_plug包来解决这些问题并添加

<input type="hidden" name="_csrf_token" value="<%= get_csrf_token %>">
Run Code Online (Sandbox Code Playgroud)

到我的index.html.eex模板页面,我仍然在我的浏览器控制台上得到这个:

POST http://localhost:4000/register 403 (Forbidden)

n.ajaxTransport.k.cors.a.crossDomain.send @ jquery-2.1.4.min.js:4

n.extend.ajax @ jquery-2.1.4.min.js:4

n.each.n.(anonymous function) @ jquery-2.1.4.min.js:4

(anonymous function) @ socket.js:62

n.event.dispatch @ jquery-2.1.4.min.js:3

n.event.add.r.handle @ jquery-2.1.4.min.js:3


XHR finished loading: POST "http://localhost:4000/register".

n.ajaxTransport.k.cors.a.crossDomain.send @ jquery-2.1.4.min.js:4

n.extend.ajax @ jquery-2.1.4.min.js:4n.each.n.(anonymous function) @ jquery-2.1.4.min.js:4

(anonymous function) @ socket.js:62n.event.dispatch @ jquery-2.1.4.min.js:3

n.event.add.r.handle @ jquery-2.1.4.min.js:3
Run Code Online (Sandbox Code Playgroud)

我的javascript代码与addict示例相同,只是我没有将它作为脚本放在我的模板中(当我尝试时甚至没有调用代码).我把它放在底部priv/static/js/app.js.js代码如下:

$('#btn-register').click(function() {
  var email = $('#txt-register-email').val();
  var username = $('#txt-register-username').val();
  var password = $('#txt-register-password').val();

  $.post('/register', …
Run Code Online (Sandbox Code Playgroud)

elixir elixir-framework phoenix-framework

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

elixir phoenix和laravel elixir之间的区别

我已经使用Laravel PHP Framework进行Web开发,现在我想了解elixir并将其用作REST API服务.

我的问题是:elixir phoenix和laravel elixir有什么区别?

elixir laravel phoenix-framework laravel-elixir

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

在Phoenix/Elixir中启用跨源资源共享CORS

我的前端是一个单独的Brunch.io AngularJS应用程序.由于我的前端在http:// localhost:3333上运行,而我的凤凰后端在http:// localhost:4000上运行,因此在尝试POST到http:// localhost:4000/api/users/register时出现此错误

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3333' is therefore not allowed access. The response had HTTP status code 404.
Run Code Online (Sandbox Code Playgroud)

所以我认为这是一个CORS问题.如何在凤凰中发送标题?

这是我的router.ex

  scope "/api", MyApp do
    pipe_through :api
    # Users
    post "/users/register", UserController, :register
  end
Run Code Online (Sandbox Code Playgroud)

这是我的UserController

defmodule MyApp.UserController do
  use MyApp.Web, :controller

  def register(conn, params) do
    IO.puts(inspect(params))

    conn
    |> put_status(201)
    |> json  %{ok: true, data: params}
  end

end
Run Code Online (Sandbox Code Playgroud)

elixir cors angularjs phoenix-framework

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

Elixir宏和bind_quoted

我有一个定义模块的宏.

defmodule Bar do
  def bar do
    IO.puts "I am #{inspect __MODULE__}"
  end
end

defmodule MacroFun do

  defmacro define_module(name) do
    quote do
      defmodule unquote(name) do
        import Bar
        def foo do
          bar
          IO.puts "I am #{inspect __MODULE__}"
        end
      end
    end
  end

end

defmodule Runner do
  require MacroFun

  def run do
    MacroFun.define_module Foo
    Foo.foo
  end

end

Runner.run
Run Code Online (Sandbox Code Playgroud)

运行它的输出是:

I am Bar
I am Runner.Foo
Run Code Online (Sandbox Code Playgroud)

这是有道理的; MacroFun.define_module被调用,Runner.run因此模块被定义并因此嵌套在Runner模块下.

但是现在如果我MacroFun.define_module改为使用:bind_quoted选项:

  defmacro define_module(name) do
    quote bind_quoted: [name: …
Run Code Online (Sandbox Code Playgroud)

macros metaprogramming elixir

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

mix deps.get失败(似乎缺少ssl?)

对不起,我是Elixir的新手.在构建凤凰应用程序时,mix deps.get失败并出现错误.

% mix deps.get
Could not find Hex, which is needed to build dependency :phoenix
Shall I install Hex? [Yn] y
** (MatchError) no match of right hand side value: {:error, {:ssl, {'no such file or directory', 'ssl.app'}}}
    (mix) lib/mix/utils.ex:409: Mix.Utils.read_httpc/1
    (mix) lib/mix/utils.ex:354: Mix.Utils.read_path/2
    (mix) lib/mix/local.ex:107: Mix.Local.read_path!/2
    (mix) lib/mix/local.ex:86: Mix.Local.find_matching_versions_from_signed_csv!/2
    (mix) lib/mix/tasks/local.hex.ex:23: Mix.Tasks.Local.Hex.run/1
    (mix) lib/mix/dep/loader.ex:140: Mix.Dep.Loader.with_scm_and_app/4
    (mix) lib/mix/dep/loader.ex:98: Mix.Dep.Loader.to_dep/3
    (elixir) lib/enum.ex:1043: anonymous fn/3 in Enum.map/2
%
Run Code Online (Sandbox Code Playgroud)

erlang和elixir已通过kerlasdf安装.我的安装日志在这里http://otiai10.hatenablog.com/entry/2016/02/03/154953

envirionment

  • MacOS:10.11.2
  • Erlang:18.0
  • Elixir:1.1.1

发生了什么,我该怎么办?

erlang elixir-mix elixir phoenix-framework

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

你如何检查Phoenix/Elixir/Erlang应用程序的正常运行时间?

你如何检查Phoenix/Elixir/Erlang应用程序的正常运行时间?如果执行:observer.start()并查看"系统"选项卡,则可以在"统计"区域中查看正常运行时间.但我希望能够以编程方式提取该信息并将其包含在报告中.我已经找到了从哪里获取大部分数据,但我没有看到它从哪里获取正常运行时间.

erlang elixir phoenix-framework

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

Heroku测试在一夜之间开始失败?(无法配置沙箱)

当我的测试在Heroku上运行时,我发现了一个奇怪的错误,周五没有发生,一切都很好.

-----> Running test command `mix test`...
  08:29:52.761 [info] Already up
  08:29:53.389 [info] seeding in prod environment
  08:29:53.389 [info] runing default seeds
  All departments inserted

  ** (RuntimeError) cannot configure sandbox with pool DBConnection.Poolboy.
  To use the SQL Sandbox, configure your repository pool as:
  pool: Ecto.Adapters.SQL.Sandbox
  (ecto) lib/ecto/adapters/sql/sandbox.ex:429: Ecto.Adapters.SQL.Sandbox.mode/2
  (elixir) lib/code.ex:376: Code.require_file/2
  (elixir) lib/enum.ex:675: Enum."-each/2-lists^foreach/1-0-"/2
  (elixir) lib/enum.ex:675: Enum.each/2
  (mix) lib/mix/tasks/test.ex:229: Mix.Tasks.Test.run/1
-----> test command `mix test` failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

几个月内没有对测试配置的更改......

# Configure your database
config :ev2, Ev2.Repo,
  adapter: Ecto.Adapters.Postgres, …
Run Code Online (Sandbox Code Playgroud)

testing heroku elixir phoenix-framework

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