首页
学习
活动
专区
圈层
工具
发布

如何在Ubuntu 16.04上使用Distillery和edeliver自动化Elixir-Phoenix部署

Distillery将Elixir应用程序编译成一个包,然后您可以在其他地方部署。它还生成允许热交换代码的软件包,这意味着您可以在不停机的情况下升级实时应用程序。...sudo apt-get install elixir 使用Mix安装Hex。 mix local.hex 提示确认安装时,请输入Y。...第一次在本地开发机器上编译基于Elixir的应用程序时,系统会提示您安装Rebar,这是Mix依赖的Erlang的构建和依赖工具。在提示符下输入Y。...当我们在步骤4中创建myproject项目时,当我们使用edeliver将代码更改推送到构建服务器时,Phoenix会自动生成我们在步骤6中需要的文件.gitignore。...由于我们在构建和生产中使用相同的服务器,因此我们的主机和用户在构建和生产方面是相同的。此外,我们将在app_build目录中执行构建并将已编译的生产文件放在app_release目录中。

5K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    gettext安装及使用

    "文件未找到"编译翻译文件收起代码语言:TXTAI代码解释#编译.po文件为.mo文件msgfmtzh_CN.po-ozh_CN.mo使用gettext实现多语言支持⁠gettext是一个用于国际化(i18n...:在源代码中,使用`gettext`函数标记需要翻译的字符串:`src/main.c`:收起代码语言:TXTAI代码解释#include#include#include...;提取翻译字符串:使用`xgettext`工具从源码中提取标记的字符串,生成`.pot`(PortableObjectTemplate)文件。这个文件包含了所有需要翻译的原始字符串。...翻译字符串:使用文本编辑器或专用的翻译工具(如Poedit)打开`.po`文件,填写每个原始字符串的翻译。...编译翻译文件:使用`msgfmt`将`.po`文件编译为机器可读的`.mo`文件。

    24210

    (译) Understanding Elixir Macros, Part 1 Basics

    defcall sum(x, y), do: reply(x+y) end 在以上两个例子中, 我们使用到了一些自定义的宏, 这些宏会在编译时 (compile time) 都转化成其它的代码....元编程总是会引入一个隐形 (或不明显)的层, 在 Elixir 中这只发生在编译时, 并独立于程序的各种执行路径....mangled_result 表示 Elixir 编译器会销毁所有在宏里引用的临时变量....相反, expression_ast 的内容会是 quote(do: 1+2) 的结果. 在第三行, 我们使用 Macro.to_string/1 来求出我们所收到的 AST 片段的字符串表达形式....这就是宏工作的原理. 尽管我们只是在 shell 中尝试, 但使用 mix 或elixirc 构建项目时也是一样的. 我想这些内容对于第一篇来说已经够了.

    63830

    掌握Linux Shell参数本地化(轻松实现多语言支持的脚本开发)

    在编写 Linux Shell 脚本时,你是否想过让你的脚本能自动适配不同语言环境?比如在中文系统中显示中文提示,在英文系统中显示英文提示?...这是实现 命令行参数处理 与本地化结合的基础方式。进阶方法:使用 gettext 实现专业本地化对于更复杂的项目,推荐使用 GNU gettext 工具链。...它支持完整的翻译流程,包括提取字符串、生成 .po 文件、编译为 .mo 文件等。步骤简述:在脚本中用 gettext "字符串" 包裹所有需翻译的文本。...使用 xgettext 提取这些字符串生成 .pot 模板文件。为每种语言创建 .po 文件并翻译。用 msgfmt 编译 .po 为 .mo 文件,放入指定目录。运行脚本时自动加载对应语言的翻译。...无论是使用简单的 case 判断,还是专业的 gettext 方案,都能有效提升脚本的可用性。记住,良好的本地化是专业 Linux Shell 参数 处理的重要一环。

    17810

    Flask-Admin修改成中文显示

    Accept-Languages 头在大多数浏览器上被默认配置成操作系统层的所选择的语言,但是所有的浏览器给我们机会选择其它的语言。用户可以提供语言列表,每一个都有权重。...redirect(url_for('login')) 在模板中我们必须做一些类似的工作,但是我们使用 _() 来简化 gettext()。...任何没有放入 gettext() 或者 _() 的字符串都不会在翻译文件中,因此 Babel 不会感知这些,它们依然保持英文。...gettext 必须在请求的内容中使用才会产生翻译信息。如果我们在请求之外的地方使用,它不会翻译只会给我们英语版本的默认文本。...幸好,Flask-Babel 提供另外一个函数 lazy_gettext,它不会像 gettext() 和 _() 一样立即翻译,相反它会推迟翻译直到字符串实际上被使用的时候才会翻译。

    2.2K31

    如何在Ubuntu上部署Elixir-Phoenix MySQL应用程序

    而是使用数据库驱动程序连接到所需的数据库,然后使用数据库包装器查询数据库。 数据库驱动程序是一个Elixir应用程序,负责处理使用数据库的普通任务,例如建立连接,关闭连接和执行查询。...数据库包装器是数据库驱动程序之上的一个层,允许Elixir程序员使用Elixir代码创建数据库查询,并提供其他功能,如查询组合。 这种分离使模块化应用成为可能。...第二步 - 在应用程序中设置Ecto存储库 Phoenix应用程序通过名为Ecto的数据库包装器访问数据库。数据库包装器以项目中的Elixir模块的形式实现。...(如prod.exs和test.exs)在必要时覆盖config.exs中的设置。...如果您的应用程序由于任何错误而无法编译,Ecto也会拒绝创建数据库。 现在您已将项目设置为连接到数据库,甚至使用Ecto在开发计算机中创建数据库,您可以继续修改服务器上的数据库。

    7K20

    带你认识 flask 国际化和本地化

    支持多语言的常规流程是在源代码中标记所有需要翻译的文本。文本标记后,Flask-Babel将扫描所有文件,并使用gettext工具将这些文本提取到单独的翻译文件中。...', username=username)) 还有更难处理的情况。有些字符串文字并非是在发生请求时分配的,比如在应用启动时。因此在评估这些文本时,无法知道要使用哪种语言。...在每个语言存储库中创建的messages.po文件使用的格式是语言翻译的事实标准,使用的格式为gettext。...messages.po文件是一种用于翻译的源文件。当你想开始使用这些翻译后的文本时,这个文件需要被编译成一种格式,这种格式在运行时可以被应用程序使用。...es的localeselector函数,将使所有文本在使用该应用时显示为西班牙文 06 更新翻译 处理翻译时的一个常见情况是,即使翻译文件不完整,你也可能要开始使用翻译文件。

    2.3K30

    (译) Understanding Elixir Macros, Part 4 - Diving Deeper

    但是在适合使用宏的情况下, 你不应该仅仅因为有人声称宏是不好的, 就不使用它....我们从编译器环境中获取各种数据, 然后计算结果, 最后将所有内容打印到屏幕上. 该代码依赖于 __ENV__ 特殊形式, 可用于在最终 AST 中注入各种编译时信息(例如行号和文件)....__ENV__ 是一个结构体, 每当你在代码中使用它时, 它将在编译时扩展为适当的值. 因此, 只要在代码中写入 __ENV__.file. 文件生成的字节码将包含包含文件名的(二进制)字符串常量....然而, 我应该立即指出, 这种实现存在一些问题: 宏不能很好地处理守卫(guards) 模式匹配参数并不总是有效的(例如, 当使用 _ 来匹配任何 term 时) 在模块中直接动态生成代码时, 宏不起作用...毕竟, 宏只是一个函数, 当调用它时, 包含的模块已经编译并加载到编译器的 VM 中(否则, 宏无法运行).

    38630

    【Django | 开发】 (国际化项目&支持多语言)

    二、实现步骤 2.1 为翻译字符串添加钩子 1) py文件 将需要翻译的字符串统一使用gettext_lazy或gettext包裹 from django.utils.translation import...岗位名称:{{ job_name }} 城市: {{ job_city }} {% endblock %} 如果在翻译中存在二级变量或者三级变量在渲染时需要提前保存...(.po和.mo格式的) 在终端输入 ( 大坑插入: 由于在gettext版本低于0.15, 报错:Make sure you have GNU gettext tools 0.15 or newer...en 文件 ( 这里的en 是之前所设置的名字,需要与setting中语言配置元组中第一个数据一样,此时我们需要都将中文翻译成英文,注意!!不进行翻译会默认使用其他语言!...和django.mo编译过的翻译文件 LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), ) 效果 可以看到中文都翻译成了自己翻译的英文 配置本地化中间件

    1.1K10

    gettext模块实现Python国际化

    ---- 2.通用步骤 (1)无论是使用哪一套API,都必须提取可以翻译的字符串并且生成一个翻译模板文件.pot (2)然后生成对应于不同语言翻译的文件.po (3)我们在应用程序中使用是的二进制格式的...__main__":     print _("hello world") 这里用_()括起来的字符串就是需要翻译的字符串 (c)用xgetext来提取需要翻译的字符串生成翻译模板 ?...这里msgid后面的字符串就是需要翻译的字符串,msgstr后面就是译文字符串。对en.po重复(e)操作 (f)使用msgfmt命令从po生成二进制文件mo,也是应用程序需要使用的文件。...到目前为止所有准备工作完成 补充: 注:上面的步骤也可以用poedit这款软件完成,官网上有详细的使用教程 另外,一旦python代码中要翻译的字符串发生变化(修改、增删),需要重新生成po文件时,可以用...msgmerge命令来代替msginit命令,例如: msgmerge -U zh_CN.po my_app.pot ---- 3.在Python代码中添加国际化支持 在第一部分介绍gettext模块时

    2.8K10

    当我做 hackathon 时我在做什么 (1)

    如何在 Elixir 上「复刻」一个 pandas? 我第一个要解决的问题是做一个可以(或者至少有潜力)对标 pandas 的工具。...在大致浏览了一下 polars 的文档后,我暗自欣喜,就是它了! 接下来就是 Elixir 代码和 Rust 代码的交会对接。 在 Elixir 上使用 rust,rustler[4] 是最好的工具。...做过某个语言到另一个语言的桥接的同学都会有这样的体验:代码本身逻辑并不复杂,主要其实就是接口的类型转换,比如把 rust struct 翻译成 elixir struct,或者反之。...心碎之余,我仔细思考了一下,觉得这也是有道理的,毕竟 Elixir module 需要在加载到 code server 时去加载编译好的 so 库,如果多个 module 都去加载,(可能)会造成内存浪费...我没有亲自写过 vega-lite 的代码,只是在使用 Python 的一个可视化工具 Altair 时大致了解过 vega-lite。

    1.5K20

    【Rust日报】 2019-05-18:使用 Rust 來加速 Elixir 服務1100萬用戶

    这意味着当有人加入服务器(内部称为公会)并拥有100,000名成员的成员列表时,他们必须构建一个包含100,001名成员的新列表。 BEAM VM非常快,并且每天都在变得更快。...它试图在可能的情况下利用持久性数据结构,但在我们运营的规模上,这些大型列表无法足够快地更新。...因此团队在erlang和elixir提供的各种高性能数据结构中寻找解决办法,试过MapSet、List、OrderedSet到他们自己实现的SortedSet,终于找到了一个解决方案,但是在超过250,000...名成员的公会时性能达到了上限。...为了为Elixir加速,他们预留了一周时间使用Rustler(提供了安全的NIF绑定,方便为elixir编写rust扩展)进行概念验证,最终发现,Rust支持的NIF提供了巨大的性能优势,而无需牺牲易用性或内存

    1.3K10

    flask babel使用(flask 107)

    首先我们将这个 app “国际化”,为模板和 .py 文件中的每一个字符串添加一个 gettext 函数,由于 gettext 函数被引用的次数太多了,为了方便手写,就将其 import 为 “_”:...image 你可以注意到我们对 app 的 locale 做了配置,然后用 babel 扩展将 app 再次初始化,并且将 .py 和 .html 中的字符串做了配置,让它们都使用gettext这个函数...其中值得注意的是gettext的格式化字符串的参数。如果直接用类似"It's %s today"% day是不行的。 这么一来,app 的语言其实是被写死成中文了。...image 生成翻译模板 这样 babel 就知道要从哪些位置搜索要翻译的字符串了。...编译翻译结果 翻译完后执行下面的命令,为其编译出 message.mo 文件: $ pybabel compile -d translations 如果上述命令无法生成 messages.mo 文件,那你需要将

    1.1K20

    一个为讲PPT临时造的语言,热度碾压Go、Python,直逼Rust,Stack Overflow特别点赞!

    12 家公司任职过,分别使用过 Ruby、Javascript、Elixir、Go、Python、Elm、Rust 等编程语言。...上面是他在 2017 年 Elixir London 上的照片,当时他的演讲内容是怎么写一个面向 BEAM 的编译器。 “讲得还不错,反响也挺好。...它可编译为 Erlang 和 JavaScript,因此与其他“BEAM”语言,如 Erlang 和 Elixir 具有直接的互操作性。...使用标记参数,开发者就不必在调用函数时记住参数的顺序,也不必转到函数定义来了解它们的含义。 Gleam 是一种函数式语言,因此开发者将编写许多组合函数,这意味着一个函数的输出将成为下一个函数的输入。...在一个由社区维护的“在生产中使用 Gleam 的公司列表”中,有 19 家企业选择了 Gleam,其中包括 Web 开发咨询公司 CroCoder、AI 马匹护理助手 HayHay、会计自动化软件 Ottimizza

    49110

    (译) Understanding Elixir Macros, Part 3 - Getting into the AST

    从好的方面来看, 宏在删除样板代码时非常有用(正如 ExActor 示例所展示的那样), 并且具有访问运行时不可用的信息的能力(正如您应该从 assert 示例中看到的那样)....最后, 由于宏在编译期间运行, 因此可以通过将计算转移到编译时来优化一些代码. 因此, 肯定会有适合宏的情况, 您不应该害怕使用它们....探索 AST 结构 目前, 关于 AST 结构的文档不多. 然而, 在 shell 会话中可以很简单地探索和使用 AST, 我通常就是这样探索 AST 结构的....;第二个元素是上下文关键字列表, 它包含了该 AST 片段的元数据(例如 imports 和 aliases)....因此, 这个天真的 quoted 会产生 left :== right, 这甚至不符合 Elixir 的语法规定. 记住, 在 quoted 时, 我们不组装字符串, 而是组装 AST 片段.

    57350
    领券