我按照指南在Ubuntu机器上安装长生不老药。但是当我试图运行命令时遇到了一个问题。PFA。有人能帮我找到正确的路吗?请建议我,如果有任何其他方式来设置同样的Ubuntu
./bin/iex
谢谢,您是否先运行了make clean compile?看起来您刚刚克隆了repo并运行了iexbash脚本,但这将失败,因为Elixir.beam文件尚未编译。您可以在阅读{reason,{unde,[{'Elixir.IEx.CLI',start,[]}]}的错误中看到这方面的提示,这基本上意味
在编程Phoenix第3章中,有一个硬编码回购示例,代码如下:
defmodule Rumbl.Repo do
@moduledoc """
In memory repository.
"""
def all(Rumbl.User) do
[%Rumbl.User{id: "1", name: "José", username: "josevalim", password: "elixir"},
%Rumbl.User{id: "2", name: "Bru
我正试图在我的Phoenix应用程序上运行一些测试,下面的一行代码来自:
(在我的端点模块中,我的websocket设置为“/socket”;上面的URL正是我的浏览器要连接的URL)
。。。失败的原因是{:error,:econnreference}
其中提到了此错误,建议放置以下代码段的变体:
defmodule Calculon.Support.Helpers do
def launch_api do
# set up config for serving
endpoi
我有一个长生不老药的应用程序,我启动了
iex --sname "main" --cookie "abc" --detached -S mix
如果启动此过程时不使用分离选项,则一切正常。除此之外,main进程使用file.open和IO.write(文件路径,数据)将数据写入.csv文件。使用分离选项,不会向文件写入任何内容
所以我想,我可以尝试从我开始使用的另一个节点连接到这个流程
iex --sname "test" --cookie "abc" -S mix
那我会的
Node.co
我知道,但我喜欢在其他repl中使用ctrl-d(例如,node,irb)
我如何定制iex来实现这一点?据我所知,这目前是不可能的。IEx操作支持直接来自Erlang shell,而这并不是在Erlang中实现的
最有可能的是,它也将永远不会被实现-这个更改已经被提议并被拒绝:不可能,但是可以使用ctrl-\退出Iex和Erl。感谢链接!我(还)不明白“不按ctrl-D键”决定背后的原因,但知道这是故意的还是好的。定制iex以按ctrl-D键退出可能不明智,但我仍然好奇这是否可能。
我想找到一个实体,如果找不到则插入它。目前我是这样做的:
my_item = Repo.get_by(MyItem, var1: "some value") || Repo.insert!(MyItem.changeset(%MyItem{}, %{"var1" => var1}))
有更好的方法吗?如果变更集无效,我还想返回一个错误,当前此代码没有执行此操作。尝试以下操作:
item = case Repo.get_by(MyItem, var1: "some value") do
我正在尝试获取我的dev.exs文件中的env文件值。但他们都是零
config :extractor, :mailgun,
domain: System.get_env['MAILGUN_DOMAIN'],
key: System.get_env['MAILGUN_KEY']
当我转到iex时,它们是作为实际值出现的。在我的应用程序mix.exs中,我添加了dotenv如下
def application do
[mod: {Extractor, []},
ap
我需要查找一个用户,还需要将其与另一个表(合作伙伴)连接起来。以下是没有连接的工作代码:
result = Repo.get_by(User, login: auth.info.email)
用户表与合作伙伴表之间有一个外键,因此我想尝试以下方法:
result = Repo.get_by(User, %{ login: auth.info.email, join: :partner } )
但这导致:
field `User.join` in `where` does not exist
我对函数式编程还不熟悉,所以我正在努力解决这个问题
我试图通过地图中的一个键在地图集中找到一个地图,然后替换一个不同的值。我的方法是,在地图集中找到地图,然后从地图集中删除地图,替换地图中的值并将其添加回
def replace_in_mapset_by_id(mapset, id, key, value) do
# Find the Map that matches the ID of the Map we are looking for
foundMap = (Enum.fi
我有一张这样的名单
list = [[title, description, ~N[2018-01-01 23:00:07], comment, user],
[title, description, ~N[2018-03-02 12:10:18], comment, user]]
现在我需要将每个NaiveDateTime转换为Erlang日期(或Unix时间戳)
我相信我可以做像这样的事情
new_list = Enum.map(list,&modify_date/1
例如:
<table>
<%= for user <- @users do %>
<tr>
<td><b><%= first_name(user) %></b> (<%= user.id %>)</td>
</tr>
<% end %>
</table>
根据凤凰城1.4版电子书,测试版:
EEx执行标签中的E
我是FP和elixir的新手,我正在尝试同时执行以下功能。但这在read()上被卡住了。我尝试了Task.async和spawn\u link并在其中传递函数,但没有成功
defmodule MyFile do
def start() do
read()
write()
#Task.async(read())
#Task.async(write())
end
def read() do
case 1 do
1 -> IO.puts "this is one"
2
我有一些结构定义
defmodule Foo do
defstruct [:a, :b]
end
我有一些结构
a = %Foo{a: 1, b: 2}
我能够使用管道获得新的结构(如地图)
但与map不同,当变量中的键:
iex(4)> key = :b
:b
iex(5)> %Foo{a | key => 3}
** (CompileError) iex:5: unknown key key for struct Foo
问题是:当我在变量中有要更新的键时,如何获
我正在尝试使用take_screenshot()(Hound)截图。我只需要抓拍失败的截图
我已经尝试了try/rescue,但是即使断言失败,仍然会执行rescue块
try do
// some page elements action
assert visible_page_text(), "Hello World"
rescue
_ -> take_screenshot()
end
我也试过,
try do
// some page elements act
我尝试创建一个混合项目,但它没有config.exs,因此我创建了该文件
我引用了凤凰城项目中的config.exs
我看到config.exs没有模块定义。我试图在.ex文件中声明一个独立函数,但它按预期引发了一个错误
** (ArgumentError) cannot invoke def/2 outside module
然后我假设.exs可以在没有defmodule的情况下编写,然后我看到mix.exs有模块定义。为什么会这样
我的问题是,为什么在没有模块定义的情况下保留config.
在iex控制台中工作正常:
iex1>spawnfn->:timer.tc:timer,:sleep,[100]|>elem0 |>IO.puts结束
PID
100603
但是,当我将完全相同的行spawfn->:timer.tc:timer,:sleep,[100]|>elem0 |>IO.puts end放入.exs脚本中时,什么都不会发生,根本没有输出
为什么呢?如何并行测量函数的执行时间?脚本在打印之前退出,您不监视已启动的进程,这会导致某种竞争情况。事实上,一切都按预期进行。确保您的
原则上,通过在mix.exs中定义以cmd开头的别名,我可以将任何shell命令作为mix任务运行。但我正在与空白、引用和反斜杠进行斗争。以下是一些非工作示例:
defp aliases do
f1: ["cmd echo \"two spaces between\""],
f2: ["cmd echo 'two spaces between'"],
f3: ["cmd echo two\ \ spaces
我有一些长生不老药代码如下:
def generate_and_process_foo() do
foo = generate_foo() |> transform_foo()
process_foo(foo)
foo
end
def generate_and_process_foo() do
generate_foo()
|> transform_foo()
|> Function.side_effect(&process_foo/1)
en
在elixir项目mix.exs文件中,我们包含如下依赖项
defp deps(_) do
[
{:phoenix, "~> 0.6.1"},
{:ecto, "~> 0.2.0"}
]
end
存储这些依赖项的elixir代码的存储库在哪里
来自Ruby背景的deps函数对GEM文件来说是一个很好的分析工具。但我知道gems默认是从“rubygems.org”中提取的。换句话说,什么是灵丹妙药的Rubygems.org?这在中提到,它在中。还值
我想在特定文件夹中递归编译和加载所有模块。
我知道我可以用Mix项目做到这一点
iex -S mix run
它将加载lib/目录中的所有文件
然而,如果可能的话,我希望在非混合脚本编程中有相同的行为。
类似于code.compile\u all(“目录/”)
有这样的API吗?我不确定在Elixir中是否有内置的方法来实现这一点,但是您可以使用类似于Erlang的东西来实现同样的结果
:filelib.fold_files "directory/", "\.ex$", true, &
比如说,
x = "foo"
%{foo => 1}
**(CompileError) iex:11: illegal use of variable x in map key
显然,它是在编译时构建映射的,这可能会更有效,但为什么不像大多数具有数据结构文本的语言那样,它不返回到运行时构造函数呢?我很想知道《长生不老药》中地图的特征是否有我遗漏的地方
更令人困惑的是,一年多前何塞·瓦利姆(JoséValim)曾说过:
Variable keys in maps will be avai
这似乎是一件简单的事情,但我只是似乎找不到一个足够简单的答案让我摸索
假设我有一种长生不老药的功能,如下所示:
def fetch_card_ids(offset, total_cards) when offset < total_cards do
url = "http://some.domanin?offset=#{offset}"
response = HTTPotion.get url
#return or yield respon
我已使用此代码从我的LIFX灯泡获取数据包:
defmodule LIFX do
def listen(port) do
udp_options = [:binary, {:reuseaddr, true}, { :active, false }]
{ :ok, socket } = :gen_udp.open(port, udp_options)
do_listen(socket)
end
def do_listen(socket) do
case
我有一个关于默认参数和nil值的一般性问题。假设我有两个函数。一个调用另一个(这是一个助手函数)。两者都有一个可选参数
helper函数只是用一个连接符将一个列表连接到一个字符串。joiner被传递给opts关键字列表中的第一个函数。joiner的传递是可选的,它默认为和“
问题是:在第二个示例中,opts[:joiner]将为零。但它仍然存在,因此不会使用默认值
一种可能的解决方案是使用案例:
defmodule ParamTest do
def func_1(list, opts \\
标签: Elixir
phoenix-frameworkgettext
我正在使用phoenixframework创建一个项目,并使用gettext添加一些翻译。命令mix gettext.extract-merge从控制器和模板中获取所有我的翻译密钥,并将其存储在.pot和.po文件中
但是我在配置文件中有一些翻译键,我在表单选择框中将其用作选择选项。现在我有一个键列表:[:键1,:键2,键3,…,键n]
现在我需要一个关键字列表来显示翻译,并使用选择框选择关键字。我的结果是:[{translation 1:key1},{translation 2:key2},{
假设我有一个模型Post,它属于类别:
defmodule MyApp.Post do
use MyApp.Web, :model
schema "posts" do
field :title, :string
belongs_to :category, MyApp.Category
end
def changeset(model, params) do
model
|> cast(params, [:title, :category_i
这里没有什么长生不老药。我的问题是:
使用Enum.all?/2函数时,我们传递一个函数作为第二个参数:
iex(19)> is_int = &(is_integer(&1))
iex(20)> Enum.all?(list, is_int)
true
那么,为什么我不能直接传递is\u integer
iex(21)> Enum.all?(list, is_integer)
** (CompileError) iex:21: undefined functi
我一直在做一个关于宏的练习(戴夫·托马斯的优秀作品,第21章),我对发生的事情的理解有点突兀。我有两个模块,Tracer和Test,其中Tracer重新定义def宏以插入调用和响应日志,如下所示:
defmodule Tracer do
def dump_args(args) do
args |> Enum.map(&inspect/1) |> Enum.join(",")
end
def dump_defn(name, args) do
"#{
我正在尝试在《星外2》中创建一个自引用的many\u-to\u-many关系。我关注了blogpost,到目前为止它一直在运行。但是,尝试更新与exto.Changeset.put_assoc的关联总是会导致错误。我不明白为什么
这是设置:
defmodule MyApp.User do
use MyApp.Web, :model
alias MyApp.Contact
schema "users" do
field :username, :string
# A
标签: Elixir
phoenix-frameworkhighlight.js
我用过,它很管用,但感觉有点粗糙。我尝试将highlight.pack.js文件复制到web/static/js并从.html.eex文件调用它,但这只会给我一个错误。我尝试过使用CDN(它有效),但没有得到我想要的结果。那么,在phoenix v1.2.0中实现highlight.js的正确方法是什么呢。如果有必要的话,我将使用earmarkv1.0.1提供降价支持 正确的方法是通过NPM安装:
$ npm install --save highlight.js
请注意,--save会自动将
我对Elixir是全新的,当一个构建决定不构建时,我很难跟踪问题
所以我试着在这个基础上使用这个
我面临的一个问题是,我不断地遇到这个问题:
** (Mix) Could not start application reph: Reph.start(:normal, []) returned an error: shutdown: failed to start child: Reph.ReactIO
** (EXIT) an exception was raised:
标签: Elixir
phoenix-frameworkplug
我有我的api管道,我想在其中添加一个插件,该插件基本上在数据库中执行一些操作,并根据响应执行分配,然后在视图中使用该分配
我在将分配从插件传递到视图时遇到问题
web/router.ex
pipeline :api do
plug ApiV2.Plug.Authenticate, repo: Auth.Repo
plug :accepts, ["json"]
end
defmodule ApiV2.AddressController do
use ApiV2.Web, :cont
作为一个学习项目,我正在尝试用Elixir创建一个小型CLI应用程序。这个程序的某些部分将需要一些日期时间处理,因此我偶然发现了长生不老药库[日历][日历]
当我使用以下命令构建它时,它似乎确实包含[calendar]的依赖项:
(mix clean &&)? mix escript.build
当它向我抛出这个错误时:
Could not start application tzdata: exited in: Tzdata.App.start(:normal, [])
*
我在发送带有附件的电子邮件时遇到问题,该附件的文件名包含中文字符
电子邮件中附件的文件名看起来不正确。
如何使文件名在附件中正常显示
长生不老药
def compose(重用我的路径、简历名、电子邮件、主题、文本)do
%邮递员{
主题:主题,,
来自:career@xxx.com",
收件人:[email],#应为[email]arg
html:“
#{text}
",
附件:[
Mailman.Attachment.inline!(reusme_路径,“#{subject}.pdf”
我有一个对象
%{
shares: []
}
我想通过Enum将结构%Cs{name:“Junaid1”},%Cs{name:“Junaid2”}添加到列表中。每个或映射都可以这样做吗
好的,再简单一点,我再次更新问题
Enum.each(email_array, fn (email) ->
with {:found_user, sharee} <- ensure_user(email)
do
case CameraShare.create_sha
所以我有一个phoenix项目,我用它作为某种测试应用。如果我想使用我正在使用(并对其进行更改)的elixir源代码的本地版本,我该如何告诉phoenix使用它?我也希望能够使用“iex-S混合”与它。下面的elixir:[“~>1.6.0-dev”,路径:'/my/local/path/to/elixir']不起作用,但我正试图这么做
我已经尝试添加下面的,我得到一个语法错误。向依赖项添加elixir(在def deps函数中)似乎没有任何作用。我还使用kiex和kerl进行长生不老药版本配置
给定一个输入字符串,我希望只使用正则表达式,以前导顺序查找特定字符在字符串中出现的次数。我一直使用正则表达式来匹配表达式,但从不计算其中的字符。我不知道怎么做。所以我只是在寻找一个解决这个问题的方法,使用模式匹配
例如,假设我的示例字符串是S=“0004fhjs0sjk0”
我需要计算字符串s中前导的“0”s的数量,在本例中为3。如何定义返回计数的函数(此处为3)
我已经用递归实现了一个解决方案,但我想用正则表达式来实现它。
def get_leading_zeros(value, count)
我对长生不老药和异位素还不熟悉,我想知道我们是否打破了枯燥的原则,两次声明对象的模式:迁移和模式
我假设一个表创建的迁移可能是默认模式,不是吗?不,实际上,试图让一个文件来完成所有事情会非常奇怪。
EXTO的模式处理“属于/拥有”多个/多个对多个关系,迁移处理“与数据库对话”部分 它们有不同的用途,加上默认模式不声明键、外键等。嵌入式模式可能以不同的方式存储在数据库中。迁移可能会修改模式。等等,等等,等等。这应该是一个评论,不是一个答案。“>你必须有50个声誉来评论。“让它发生,我将能够做到这一
我在我的项目中使用以下方法:
use Amnesia
defdatabase Database do
deftable Account, [{:id, autoincrement}, :email, :account_number, :password, :amount],
type: :set, index: [:email, :account_number] do
@type t :: %Account{
id: non_neg_integer,
我打算这样做:
columns = ["id","name","col1","col2"]
rows = [10, "foo", "val1", "val2" ]
Enum.zip(columns, rows) |> Enum.into(%{})
=> %{"col1" => "val1", "col2" => "val2", "id" => 10, "name" => "foo"}
但不幸的是,行是一个嵌套列表,例如:[[10,“foo”,“val1”
我在看这篇博文:
这里有一节将用户id放入会话中。但是,当您想要访问该用户时,您需要使用该ID来查找该用户
conn
|> put_session(:current_user, user.id)
|> put_flash(:info, "Logged in")
|> redirect(to: "/")
将整个用户结构放在会话中有什么不好?那会更简单吗
...
|> put_session(:current_user, user)
...
P
我正在寻找长生不老药,我对这个片段感到困惑:
for <<c <- " hello world ">>, c != ?\s, into: "", do: <<c>>
如果代码不能独立存在,那么它如何在理解范围内工作?它在理解之外的任何地方都有效吗?这正是Elixir选择用于二进制理解的语法。另一方面,Erlang使用了,可能值得一提的是,“子句可能独立”是定义有效性的一种非常糟糕的方法,因为即使是最简单的理解子句i
iex(2)>
我试图升级到Elixir1.7(我目前有1.6.0)。
我在终端上运行了brew upgrade elixir,但它说错误:elixir未安装。
当我运行elixir--version时,我得到了一个奇怪的输出:
=SUPERVISOR REPORT==== 27-Jul-2018::15:03:35.806956 ===
supervisor: {local,'Elixir.Logger.Supervisor'}
errorContext: start_error
我需要使用map的值对map列表进行排序
list = [
%{id: 3, name: "Abe", count: 50},
%{id: 1, name: "Bill", count: 10},
%{id: 2, name: "Candy", count: 2},
]
例如,我需要按id排序的列表:
list = [
%{id: 1, name: "Bill", count: 10},
%{id: 2, name: "Candy", count: 2},
%{id:
示例:我们有一个列表[1,2,3,4],还有一个fn&(&1>=3)我想拿回3,和[1,2,4]
目前我的做法是:
index = Enum.find_index(list, func)
elem = Enum.at(list, index)
rest = List.delete_at(list, index)
这是3行代码,看起来像是一个可以缩短的常见模式。有没有更好的方法来实现类似的功能?假设只有一个元素与您的函数匹配,您可以使用split\u和+模式匹配:
iex(1)> {[it
我得到了一个包含元组的枚举,如下所示:
[
{"-", "-", "-", "7", "-", "-", "-", "-", "-", "-", "0", "-"},
{"-", "-", "5", "-", "-", "-", "-", "-", "-", "-", "-", "-"},
{"-", "5", "-", "-", "-", "-", "-", "-", "-", "7", "-", "-"},
我正在经历一些长生不老药的Koan,我对这些代码行中发生的事情感到有点困惑
def乘以五,然后(数字,乐趣),做:乐趣。(数字*5)
def方形(编号),do:编号*编号
koan“您可以将函数作为参数传递。在名称前放置一个“&”,并说明arity”do
断言时间_五_和_然后(2,&平方/1)=___
结束
对于\uuuuuuuu,正确答案是100。但我不知道如何或为什么,有人能清楚地说出发生了什么吗?&是操作员&square/1表示“捕获名为square的函数,该函数具有arity 1(简
标签: Elixir
ectopolymorphic-associations
我有一个名为:issues的表,我需要建立一种链接两个问题的方法。我曾想过创建一个名为:links的新表,但由于必须遵循以下规则,因此在设计EXTO模式时遇到了一些问题:
1. Links should be two-way and be any of these types: ["blocked-by" | "blocking" | "relates-to"]
2. If Issue-A is blocked-by Issue-B, Issue-B should be blocking Iss
在Erlang中,当引发错误时,我可以通过将第二个参数传递给error,将参数包含到当前函数中:
-模块(foo)。
-出口([foo/2])。
foo(A,B)->
错误(出了问题,[A,B])。
这意味着参数将在堆栈跟踪中可见,这可以使调试更容易:
> foo:foo(1, 2).
foo:foo(1, 2).
** exception error: something_went_wrong
in function foo:foo/2
called as
输出总是错误的。
为什么?您使用的是Enum.take_random,它返回一个列表。这当然永远不会匹配字符串
对代码的一些改进:
defmodule需要做什么
def rnd do
lst=[“石头”、“布”、“剪刀”]
tke=Enum.random(lst)#这将返回单个项目,而不是列表
IO.inspect(tke)#如果以前使用过inspect,也不需要进行字符串插值
#你会发现“tke”确实是一个列表
IO.puts hd(lst)#hd和tl都是非常有用的函数,请查看它们
tke=
上一页 1 2 ...
58 59 60 61 62 63 64 ...
下一页 最后一页 共 125 页