我从客户端应用程序收到一些日期,格式为2017-03-20 17:01:24,我希望比较和提取小时数、天数、分钟数或任何可用计数器(我希望灵活)
我看到timex软件包的特点如下:
with {:ok, date} <- Date.from_iso8601(string_date) do
Date.diff(date, Date.utc_today)
end
Duration.diff(Duration.now,Duration.zero,:天)
我的问题是,我不
标签: Elixir
phoenix-frameworkecto
我有一个SQL查询,只返回任何其他用户发送给用户的最新消息(即,“仅显示每个消息发送者发送给我的最新消息”)。在纯SQL中,我可以得到如下工作:
select messages.* from messages
join
(select max(inserted_at) maxtime,sender_id from messages group by sender_id) latest
on messages.inserted_at=latest.maxtime and messages.send
Elixir的函数“将给定字符串中的第一个字符转换为大写,其余字符转换为小写”。将第一个字符大写并保持其余字符不变不是更直观吗?也许我缺少一些理由
当前的实施导致了本地ATM->本地ATM,忘记PIN->忘记PIN等。这是get要求资本化的elixir api
def capitalize(string, mode) when is_binary(string) do
{char, rest} = String.Casing.titlecase_once(string, mode)
这是我的Elixir模块,包含在MyModule.erl中
defmodule MyModule do
def print do
IO.puts "hi all"
end
end
我试图使用shell脚本运行elixir方法。它编译文件,但
iex MyModule.erl
MyModule.print
他没有跑步。我认为这是因为第一个命令进入Erlang虚拟机。如何调用此方法?Elixir文件通常具有.ex扩展名。如果您不打算编译它,我们建议使用.exs文件。
(代码位于Github上)
尝试将EXTO/Postgrex用于某些模型时,我在Repository insert上得到了一个意外的输出
获取以下错误
07:08:32.063 [error] Error in process <0.148.0> with exit value: {#{'__exception__'=>true,'__struct__'=>'Elixir.Postgrex.Error',message=>nil,postgres=>#{cod
从数据库加载日期/时间类型时,EXTO将转换为EXTO.DateTime类型。从JSON字符串加载模型时,如何应用相同的类型转换
defmodule Rocket.User do
use Rocket.Model
schema "users" do
field :created_at, :datetime
field :name, :string
field :email, :string
field :password, :string
fie
标签: Elixir
phoenix-frameworkecto
我正在做我的第一个Phoenix应用程序,并尝试做新的/2控制器。
我写的代码是
def new(conn, %{"fbid" => fbid, "latitude" => lat, "longitude" => lng, "content" => content}) do
{fbid, _} = Integer.parse(fbid);
{lat, _} = Float.parse(lat);
{lng, _} = Float.parse(lng
我希望在def索引中只显示状态为“new”的消息
以下是我必须显示所有消息的工作代码:
def index(conn, _params) do
messages = Repo.all(Message)
render(conn, "index.json", messages: messages)
end
我正在尝试筛选消息,以仅显示状态为“新建”的消息。以下是我尝试失败的代码:
def index(conn, _params) do
messages = Repo.all(Messa
我试图使用HTTPoison编写一个web抓取工具。作为第一步,我按照下面所示的步骤编写了一个简短的HTTP访问代码
通过混合创建项目
$mix新的httptest1
在lib/httptest1.ex上编写一个简短的代码
defmodule Httptest1 do
require HTTPoison
def test1 do
ret = HTTPoison.get! "http://www.yahoo.com"
%HTTPoison.Response{status_
我正试图在中重新创建Flash Messages guide,但我收到一个错误,该错误表明未定义的函数:Phoenix.Controller.Flash.put/3(模块Phoenix.Controller.Flash不可用)
然而:
我的router.ex浏览器管道中有插件:fetch_flash。
我已包括:
use Phoenix.Controller
alias Phoenix.Controller.Flash
在模块定义的顶部。
我还尝试将语法调整到我的代码中(在渲染中我会收到一个
我在读一本关于长生不老药的书
在字符串比较中,它表示:
Elixir提供了两个用于比较字符串相等性的选项,=和==运算符。=运算符通常是最简单的,尽管另一个运算符产生相同的结果
如果两个运算符的意思相同,那么使用它们的目的是什么?想到的一个例子是float,它使用与字符串相同的比较函数:
iex> 1 == 1 #true
iex> 1 == 1.0 #true
iex> 1 === 1 #true
iex> 1 === 1.0 #false
为了你==
i
我可能有个愚蠢的问题。来自Ruby背景,如果我忘记了方法的一些必需参数,解释器将抛出一个缺少参数的错误,我知道这是一个很小的错误
因为我对长生不老药还不熟悉,所以我会得到未定义的函数Random.some_function/2,当可能是Random.some_function/3被定义时,我只是碰巧忘记了
除了谷歌搜索或查看文档,还有没有更快的方法可以找到答案?只是好奇。在iex终端中,您可以使用h关键字来显示所需功能的文档。这将适用于所有定义了文档或语法中的文档的函数。范例
h Enum.re
标签: Elixir
phoenix-frameworkecto
我正试图学习凤凰城的形态系统,包括外星模型,但我遇到了一个我无法通过的问题。我创建了一个表单:
<div class="jumbotron">
<%= form_for @changeset, user_path(@conn, :create), fn f -> %>
<label>
Login: <%= text_input f, :login %>
</label>
<label&
我正在尝试复制以下Ruby on Rails助手:
def body_classes
"c-#{params[:controller].underscore} is-#{params[:action].underscore}"
end
就我所知:
def body_classes(conn) do
"l- is-#{action_name(conn)}"
end
如何检索布局/视图名称?您正在查找或和
如果你只想用动词,你可以用
比如:
Phoenix.Naming.reso
标签: Elixir
phoenix-frameworkecto
对于控制器中的一些查询,我有两个计划
计划1:
defmodule Demo.UserController do
# ...
def index do
# This is just for example
# The point is Repo in used here
Repo.all(User)
end
end
计划2:
defmodule Demo.User do
# ...
def all do
# Put all Repo API
标签: Elixir
phoenix-frameworkecto
我试图填充一个字段:params(来自模型/模式),它是一个映射。我有一个工作表单_,我想通过复选框填充它:params映射,这样当表单提交时,控制器将收到类似%{…params=>%{“param1”=>“true”,“param2”=>“false”}的内容。
我已经查看了输入,但这似乎不是我所需要的,因为它依赖于嵌套的模式和模型,这意味着我需要为每一组新参数创建一个新的模式(如果参数发生变化,我需要一些通用的,不需要更改源代码)
%>
工具
参数1
参数2
执行日期
因此,我需要将所有这
标签: Elixir
phoenix-frameworkcowboy
我知道Cowboy能够处理SPDY协议(但不是HTTP2)。
然而,查看Phoenix框架源代码,我只看到http和https调用。斯普迪被忽视了吗?
遗憾的是,我的Elixir/Phoenix站点的页面服务速度比它的老Rails版本慢,因为Apache/Passenger使用了SPDY,而Phoenix没有
代码库中对SPDY的唯一引用似乎是
我是否应该尝试使用Phoenix,看看如何添加正确的牛仔称呼,还是我遗漏了一些明显的东西?老话题,但牛仔2.0支持HTTP/2
这里是凤凰城牛仔2适配器
我需要对值映射应用一些函数。
这些函数在最坏的情况下大约有900个函数,所以我在数据库中创建了它们作为记录,并立即将它们加载到地图中。这样我可以创建一个管理页面来管理所有的转换公式。。。有一天
现在我有这样的
conversion=%{"0":"Tools.Myfunc1/1","1":"Tools.Myfunc2/1",etc...}
然后我需要在map语句中应用/执行它们
问题是它们是字符串,我得到了这个错误
|>Stream.zip(转换)
|>map(fn{rawValue,formu
由于在处插入的和在处更新的不能为null这将不起作用:
def change do
alter table(:channels) do
timestamps
end
end
**(Postgrex.Error)错误(非空冲突):列“插入位置”包含空值
有没有一种简单的方法可以在不复制时间戳功能的情况下完成此操作?该时间戳/1功能接受选项关键字列表,您可以使用它设置默认值
def change do
alter table(:channels) do
timestam
标签: Elixir
phoenix-frameworkecto
我正在尝试将EXTO连接到现有的SqlServer数据库。SqlServer希望自动填充主键字段,因此在插入时无法提供值。我最初将该字段标记为必需的,但即使在删除该字段之后,它构造的插入查询仍然具有该字段,并且正在尝试将:nil放入其中。所以我还是犯了个错误。是否有一种特殊的方法来设置模型,或者我应该传递给插件以使其工作?如何插入到SqlServer
我正在使用tds_外部适配器。我得到的错误是:
Cannot insert explicit value for identity column
我想使用“mix”命令构建一个应用程序
混合新的appname--模块
但在iex解释器上,它不被识别
我在线阅读了运行我想要的另一个替代方法是将其作为脚本参数传递:
$bin/elixir bin/mix new appname--模块
但是这也不起作用mix是一个可执行文件,您需要从操作系统外壳运行,而不是从Erlang/Elixir外壳运行。顺便说一句,Windows与此无关。
在我的模板(html.eex文件)中,我想使用一个正则表达式在一个包含多个CSS值的字符串中捕获特定CSS属性的值。我认为正则表达式是正确的,但是我得到了一个语法错误
例如,要捕获此字符串(40)中width的值:
我正在使用:
<%= Regex.named_captures(~r/(?<=width: ).*?(?=px)/, to_string @A) |> elem(0) %>
我得到一个参数错误。您可以尝试:
Regex.named_captures(~r
比如说,我在phoenix应用程序的“lib”文件夹中创建了一个模块。我如何从控制器访问它,我必须先加载它吗?或者只是化名?或者先在启动时加载,然后加载别名?所有.ex中的所有模块(而不是.exs)每当执行mix compileinto\u build/dev/lib/my\u app/ebin时,lib中的文件将编译成.beam文件,其中dev是混合环境,my\u app是应用程序的名称。每当您尝试在尚未加载的模块上调用函数时,Erlang VM都会在所有“代码加载路径”(已包含\u buil
我想设置一些清理代码,以便在用户终止REPL之前运行
会话以iex-S mix开始
我期待着跑步:
System.at_exit fn (_) -> File.write! "afile", "it works" end
在iex会话中创建名为afile的文件,但这似乎没有发生
更具体地说,我试图实现什么,我在REPL内部启动一个系统进程(使用system.cmd/2),我希望在iex进程终止时终止这个进程。破解erlang控制台行为(Elixir只是为iex派生erlang控制台)这太
我在跟踪上面写着“跑步”的地方:
iex> i 'hello'
所以我跑了:
iex(1)> i 'hello'
得到:
** (CompileError) iex:2: undefined function i/1
长生不老药版本:
Erlang/OTP 18[erts-7.3][source][64位][smp:4:4][async threads:10][kernel poll:false]Interactive Elixir(1.1.0-dev)您链接到的指南使用的函
在Elixir中,pin运算符用于防止变量重新绑定。但是,对于类似于
from u in User, where: u.username == ^username
《凤凰城》节目的作者(第7章)说
请记住,^运算符(称为pin运算符)表示我们希望保持^用户名不变
但这听起来并不正确,因为显然,查询中的比较不会导致变量的任何重新绑定
这本书的作者(何塞·瓦利姆(JoséValim)合著)错了吗?EXTO查询中的pin操作符仅仅是EXTO DSL的构造,而不是通常的Elixir pin操作符吗?或
对列表中的值进行简单求和:
defmodule ListMath do
def sum_list([head | tail], accumulator) do
sum_list(tail, head + accumulator)
end
def sum_list([], accumulator) do
accumulator
end
end
但调用它需要为累加器传入一个值,如:
IO.puts ListMath.sum_list([4,5,6],0)
15
我想填写html表单以创建注释正文,这样我就可以通过了解thread\u id和user\u id将其插入数据库。现在我很难获得线程id,即使是在url中
现在,我有这样的路线:
thread_path GET /manage/thread Rumbl.ThreadController :index
thread_path GET /manage/thread/:id/edit
当我试图与数据库中的用户创建会话时,遇到了这个错误。我的用户模式有很多项目,因此当我尝试创建会话时,会出现此错误
项目:#外部关联。未加载
我想我明白它在说什么,但我不知道在哪里预加载数据,以便页面将呈现在这里,这是我收到的全部错误
defmodule PerriAir.Router do
use PerriAir.Web, :router
use Honeybadger.Plug
use ExAdmin.Route
pipeline :browser do
protoc
我创建了一个Phoenix应用程序,然后添加了发送电子邮件的竹模块,今天下午我成功地使用Elixir发送了我的第一封电子邮件,但我不得不将用户名和密码硬编码到config.exs
我在phoenix项目的根目录中读取并设置了一个.env文件,我正在尝试使用config.exs文件中的以下语句加载环境变量
username: System.get_env("SMTP_USERNAME"),
password: System.get_env("SMTP_PASSWORD"),
然而,电子邮件没有被
我尝试在一台主机上的两个节点上运行我的应用程序:
我创建了配置文件:
[{kernel,
[
{sync_nodes_optional, ['n1@127.0.0.1', 'n2@127.0.0.1']},
{sync_nodes_timeout, 10000}
]}
].
我运行(从终端1):
然后(从2号航站楼):
我收到:
** (Mix) Could not start application app: App.start(:normal, []) retur
我正在给凤凰路线打电话,它的工作往往需要10秒以上的时间。这太长了,凤凰城超时了
这个问题可以通过WebSocket轻松解决,但是我想知道如何使用普通REST来解决
菲尼克斯过程模型是什么?是否所有请求都进入工作池,只是即使使用工作池也长时间阻止是不明智的
我想知道普通休息是怎么做的
您可以提高代码的效率,增加Web服务器上的超时时间,或者两者兼而有之
什么是菲尼克斯过程模型?是否所有请求都转到工作池
不,请求不会进入工作池
对于web服务器,Phoenix当前正在使用。因此,当您访问Phoen
正如标题所述,我的问题是:
有没有办法通过Elixir中的模块名称来确定模块是否存在?
在四处寻找了一段时间后,我终于找到了,但这并不是我想要的。在这篇文章中,他们提到了代码。确保\u加载/1,但我认为这不是我所需要的
现在,我用以下方法来解决这个问题:
def module_exists?(module_name) where is_atom(module_name) do
!is_nil(module_name.module_info)
rescue
e in UndefinedFu
例如,打电话
GET /users/1/items/2?foo=bar
调用show(conn,params)和“foo”=>“bar”在我的params中
这个职位的等价物是什么
POST /users/1/items/2?foo=bar
它不会影响我的更新功能。相反,我看到:
**(Phoenix.Router.NoroutError)找不到POST/users/1/items/2(MyApp.Router)的路由
编辑:附加信息
#routes
resources "/users",
在ExAdmin中编辑时,使用集合定义的所有字段都将丢失其值。编辑时如何保存它们
form vehicle do
inputs do
input vehicle, :vehicle_type, collection: Enum.map(VehicleTypeEnum.__enum_map__, fn a -> Atom.to_string(a) end)
选择和创建工作,但当我单击“编辑”时,它会返回为每个下拉列表选择车辆类型
[更新]
问题似乎是我使用的是EctoEnum
标签: Elixir
phoenix-frameworkcircleci
我很难在CircleCI上获取我的Elixir/Phoenix应用程序。
我已经添加了他们的配置文件,试图搞乱它,但似乎没有任何效果。。。上面说
** (KeyError) key :username not found in: [types: Postgrex.DefaultTypes, backoff_type: :stop, pool: DBConnection.Connection, database: "postgres", otp_app: :todo_with_auth, repo
我有以下地图作为输入
temp = %{"temperature" => %{
"details" => "Temperature Template",
"sensors" => [
%{
"name" => "TMP",
"type" => "integer",
"value" => 0
我在config/config.exs中有一个用户提供的配置对象。事实证明,我需要一个用户提供的url到dev.exs文件中
从技术上讲,这个值可能是一个环境Docker变量,但我试图使config.exs成为唯一的真实来源
问题
我做不到
我想没有办法了。我错了吗
更新/更多信息
我在config/config.exs
config :data, Document,
deployment: %{
local_host: "somehost",
swarm_host: "ot
我最近一直在学习长生不老药,我想知道解决我当前问题的正确语法是什么。我正在尝试使用Elixir更新一个模型,此更新包括向当前值添加一个值(即金额=金额+传递的金额)和将一个新值推送到一个EXTO数组(即交易++新交易)。以下是我最新的尝试:
def add_transaction(conn, %{"coin" => coin_params}) do
coin = Repo.get_by!(WalletCoin, ticker: coin_params["ticker"])
我想弄清楚在什么情况下需要使用flush
作为反例,这种(琐碎的)情况不需要刷新:
defmodule MyRepo.Migrations.TestFlush do
use Ecto.Migration
def change do
create table(:test)
alter table(:test) do
add :a, :integer
end
end
end
它使用exto.migrate和exto.rollback分别“向前”和“
我已经阅读了关于这个主题的其他答案,但我特别想关注Elixir自己的关于混合和DSL的内容
在他们的例子中,他们说有三种选择:
# 1. data structures
import Validator
validate user, name: [length: 1..100],
email: [matches: ~r/@/]
# 2. functions
import Validator
user
|> validate_length(:name, 1..
我正在使用宏,我想将一个动态标识符传递给苦艾酒宏enum,希望用一个集合列表生成不同的enums。一切都在一个的理解框架内
我已经读到,Kernel.apply/3对宏不起作用
我也试过:
我也试过不加引号:
似乎我无法解压缩作为宏enum标识符传递的任何内容。有可能做到这一点吗?有可能。问题在于enum假设第一个参数是原子
defmodule MacroHelper do
defmacro enum_wrapper(names, do: block) do
for name &l
我有一个名为MyApp的应用程序,每当我通过IEx-S mix打开IEx会话时,我都必须这样调用repo:MyApp.repo.all(MyApp.User)
如果我可以自动导入项目模块,这样我只需执行此Repo.all(User)即可获得与上述相同的值,我将非常高兴
有什么方法可以做到这一点吗?您可以使用。您可以创建文件并添加:
# .iex.exs
alias MyApp.Repo
这将为您设置这些别名。该文件中有设置变量,或者添加一些shell配置。您可以使用。您可以创建文件并添加:
#
我希望能够在长生不老药中实现
下面是一些示例代码:
defprotocol Size do
def size(data)
end
defmodule Foo do
defstruct []
defimpl Size do
@doc """
## Examples
iex> Size.size(%Foo{})
0
"""
def size(foo) do
0
end
end
end
标签: Elixir
phoenix-frameworkecto
如何将2d列表保存到postgres中?
或者将匹配的长度放入列表
我在迁移过程中尝试过这个
add :checkpoints, {:array, :string}
和模式
field :checkpoints, {:array, {:array, :string}}
但当我将[[“C23”、“E12”]、[“N34”]、[“G22”]]的示例值保存到:checkpoints字段时,
我得到这个错误:
(ArgumentError) nested lists must have li
在我的Elixir应用程序中,我有两个名为market\u manager和candle\u manager的应用程序
在appcandle\u manager中,我有以下树状结构:
在appmarket\u manager中,我有一个:
MarketManager.ManagersSupervisor是一个可以启动经理的动态主管。当我启动一个管理器时,我得到以下信息:
另外,我启动的管理器将在CandleManager.Bitfinex.RealtimeSupervisor中启动一个名为Can
我的任务是在应用程序运行时读取JSON文件并将其存储在配置文件中。我经历过
现在我的配置提供程序代码是
defmodule JSONConfigProvider do
@behaviour Config.Provider
# Let's pass the path to the JSON file as config
def init(path) when is_binary(path), do: path
def load(config, path) do
# We
我在删除Elixir中URL最后一个斜杠后的所有内容时遇到问题。例如,我有一个URL:
http://localhost:4000/admins/new
我想把它改成:
http://localhost:4000/admins
我该怎么做呢?您可以使用正则表达式:
Regex.replace(~r{/[^/]+$},”http://localhost:4000/admins/new", "")
输出:
”http://localhost:4000/admins"
最安全的方法可能是使用
uri
标签: Elixir
phoenix-frameworkphoenix-live-view
在我的实时视图模板中,我添加了以下代码段:
<script src="<%= Routes.static_path(@socket, "/js/hi.js") %>"></script>
这导致了以下错误:
如何修复此问题?我通过更换
use Phoenix.LiveView
与
在watch_live.ex.Routes只是MyAppWeb.Router.Helpers的别名。您可以一直使用Phoen
标签: Elixir
phoenix-frameworkex-unitphoenix-live-view
我正在测试LiveView表单
我得到的结果是一个包含呈现html的字符串
我想断言结果有一些特定的元素。它可以用这样的函数来完成
assert view |> element("#target", "test") |> has_element?()
但它只接受LiveView的实例,而不是html字符串
断言render\u change/2结果将具有特定文本的特定标记的最佳方法是什么?有三种主要方法可以验证这一点
第一个也是最简单的方法是
上一页 1 2 ...
31 32 33 34 35 36 37 ...
下一页 最后一页 共 125 页