【问题标题】:How to run 'mix' commands on a release (elixir/exrm)?如何在发行版(elixir/exrm)上运行“混合”命令?
【发布时间】:2016-07-20 15:17:45
【问题描述】:

使用 Elixir/mix 构建的应用程序。

我们有一堆实用函数(即:seed/clear Mnesia db),我们以elixir mix foo 运行。

一旦构建了一个版本(使用 mix + exrm)并部署在目标机器上(我们不希望有完整的构建链或完整的源代码),是否有一种实用的方法来访问这些命令?

【问题讨论】:

  • @Gazler 有资格作为一个成功的答案!谢谢!
  • 我已将评论复制到答案并将其标记为社区 Wiki。这允许任何人修改答案,但这意味着问题不会一直悬而未决。当你有机会时,请接受它。 :)

标签: elixir elixir-mix exrm


【解决方案1】:

请看https://github.com/bitwalker/exrm/issues/67#issuecomment-183457937

既然 #286 已修复,我建议采用以下方法,这就是我们的做法:

构建一个 escript 来调用您希望在发布中可用的任务(使用 exrm 插件:https://gist.github.com/MSch/9cfc185e24e2f3509650)并从发布中调用它:

rel/pssync/bin/pssync escript bin/release_tasks.escript 迁移 这样我们就可以控制何时何地迁移、播种等。

存在一些重复/间接,因为我们希望(大多数)任务通过混合开发和生产中的 release_tasks.escript 都可用,但这是可以管理的。这也意味着我们可以在不完全启动 OTP 应用程序的情况下进行迁移。

在理想的未来,这将被上游化到 exrm 中并更紧密地集成,这样我就可以进行 rel/pssync/bin/pssyc 迁移,但到目前为止,我们已经对我们的方法有了很好的体验。

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2015-12-28
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多