备注:

distillery  使用很棒的elixir 打包构建工具,下面演示的是升级以及降级
 
1. 参考项目
https://github.com/rongfengliang/phoenix-rest-demo.git

备注: 此项目已经以及配置distillery了,可以参考文档
 
 
   2. 升级&& 降级代码构建
实际上主要是进行mix.exs  版本修改以及mix  release --upgrade  参数使用

a.  0.0.1 版本

mix.exs

def project do
[
app: :hello,
version: "0.0.1",
elixir: "~> 1.4",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps()
]
end /web/templates/page/index.html.eex 修改部分代码: <div class="row marketing">
<div class="col-lg-6">
<h4>dalongdmeo v 0.0.1</h4>
<ul>
构建: MIX_ENV=prod mix release b. 0.0.2 升级版本修改 mix.exs def project do
[
app: :hello,
version: "0.0.2",
elixir: "~> 1.4",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix, :gettext] ++ Mix.compilers,
start_permanent: Mix.env == :prod,
aliases: aliases(),
deps: deps()
]
end /web/templates/page/index.html.eex 修改部分代码: <div class="row marketing">
<div class="col-lg-6">
<h4>dalongdmeo v 0.0.2</h4>
<ul>
构建: MIX_ENV=prod mix release --upgrade c. 构建结果
参考下图:
 
 
3. 使用
a. 启动一个版本(0.0.2)

因为有两个构建,默认启动是最新的版本

_build/prod/rel/hello/bin/hello foreground

结果如下图:
 
 
 
b. 演示降级

_build/prod/rel/hello/bin/hello downgrade 0.0.1

Release 0.0.1 not found, attempting to unpack releases/0.0.1/hello.tar.gz
Unpacked successfully: "0.0.1"
Release 0.0.1 is already unpacked, now installing.
Installed Release: 0.0.1
Made release permanent: "0.0.1" 结果如下图:
 
 
 
4. 总结
功能比较棒,能够实现代码的热切换,对于业务不能停顿的系统特别有用
 
 
5. 参考资料
https://github.com/rongfengliang/phoenix-rest-demo
https://hexdocs.pm/distillery/walkthrough.html#content
 
 
 
 
 

使用distillery 实现版本的动态升级&& 动态降级的更多相关文章

  1. Android 插件化 动态升级

    最新内容请见原文:Android 插件化 动态升级 不少朋友私信以及 Android开源交流几个 QQ 群 中都问到这个问题,这里简单介绍下 1.作用 大多数朋友开始接触这个问题是因为 App 爆棚了 ...

  2. ffmpeg 2.8.1 最新版本 VS2013 可调式动态库

    ffmpeg 2.8.1 最新版本 VS2013 可调式动态库 由于大多数初学者都在想尽各种版本寻求VC编译调试ffmpeg的版本,我也曾经移植过几个版本的ffmpeg到VC上编译.: 链接所需动态库 ...

  3. 结合rpyc使用python实现动态升级的方法

    动态升级,就是程序不退出的情况下,将其代码更新的策略.假设集群含有多个机器,然后每个机器部署一套程序,当升级的时候就要去所有的上面部署一把. (1)有个包装程序专门负责接口并检查是否需要更新,当需要更 ...

  4. 【大话QT之十二】基于CTK Plugin Framework的插件版本号动态升级

    应用需求: 某些场景下我们可能面临这种问题,在执行着的应用程序不能终止的情况下,升级某个功能(或添,或减.或改动).在不採用CTK Plugin Framework插件系统架构的情况下这将是非常困难的 ...

  5. Quartz.NET 3.0.7 + MySql 实现动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)

    原文:Quartz.NET 3.0.7 + MySql 实现动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一) 前端时间,接到领导任务,写了一个调度框架.今天决定把心路历程记 ...

  6. mybatis操作动态表+动态字段+存储过程

    存储过程 statementType="CALLABLE" <!-- 计算金额存储过程--> <update id="getCalcDistributo ...

  7. 出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误

    出错场景是升级oracle驱动,将版本从ojdbc14升级到ojdbc6,hibernate执行原生态sql语句会报如下错误:org.hibernate.MappingException: No Di ...

  8. 关于DB2版本、补丁升级和回退的总结[转载]

    首先介绍几个概念 RELEASE的升级就是版本升级,例如9.1→9.5→9.7→10.1,可以跳版本升级,例如9.1→10.1 FIX PACK简称FP,就是打补丁,例如9.7.1→9.7.2,每个版 ...

  9. C# 反射,动态类,动态方法

    1.动态类名,固定方法名,例如.调用不同类下边的GetById()方法: //项目需要引用Miscorsoft.CSharp类库,否则会报错:找不到编译动态表达式所需的一个或者多个类型.//引用这两个 ...

随机推荐

  1. Visual Studio 2017 序列号 Key 激活码 VS2017 注册码

    Visual Studio 2017(VS2017) 企业版 Enterprise 注册码 序列号:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Visual Studio 2017(V ...

  2. Ngix

    Ngix安装 官网地址,下载为源码,需要编译安装 http://nginx.org/ 环境 1.需要安装gcc的环境. yum install gcc-c++ 2.第三方的开发包. PCRE PCRE ...

  3. C++(二十七) — 深拷贝、浅拷贝、复制构造函数举例

    1.复制构造函数.及new空间申请 复制构造函数,也是构造函数.只在初始化时调用,如果定义对象后赋值,比如,t1=t2,则只是运算符重载,没有调用构造函数. #include <iostream ...

  4. webstrom提示不见了

    今天做项目时候,不知道怎么搞的我的神编辑器webstrom没有了代码提示!!! 重启软件.重启电脑甚至卸载重装都不行,研究了半天终于知道问题出在了哪: 后来我发现在Webstorm的菜单[File]里 ...

  5. Linux中pid_t类型为int类型

    1. 查看man手册,找到pid_t,可以通过getpid函数来看 2. 打开sys/types.h 3. 打开bits/types.h 4. 打开bits/typesizes.h 找不到相关的头文件 ...

  6. nyoj117——树状数组升级版(树状数组+离散化)

    求逆序数 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中 ...

  7. yii2高级模板安装

    通过 Composer 安装 如果还没有安装 Composer,在 Linux 和 Mac OS X 中可以运行如下命令: curl -sS https://getcomposer.org/insta ...

  8. day20 project+查看新闻列表 + 点赞 + 图片验证码 + 评论和多级评论 + 后台管理 + webSocket + kindEditor

    Day20回顾: 1. 请求生命周期 2. 中间件 md = [ "file_path.classname" ] process_request[可有可无] process_res ...

  9. vue浏览器返回监听

    具体步骤如下: 1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) ...

  10. LeetCode OJ:Tenth Line(文件第十行)

    How would you print just the 10th line of a file? For example, assume that file.txt has the followin ...