备注:

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. 树 & 二叉树

    2018-01-04 19:13:46 一.树 在计算机科学中,树(英语:tree)是一种数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点组成一个具有层次关系的集合.把 ...

  2. js中中括号,大括号使用详解

    js中中括号,大括号使用详解 一.总结 一句话总结:{ } 是一个对象,[ ] 是一个数组 1.js大括号{}表示什么意思? 对象 { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或 ...

  3. phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的方法

    解决php7/phalcon3.2以上版本,不支持oracle数据库的方法 phalcon3.2(3.0以上)版本不支持oracle的方法. https://github.com/phalcon/in ...

  4. pdflush进程介绍与优化【转】

    转载地址: http://blog.ops88.com/2012/07/12/74 一. /proc/sys/vm/dirty_background_ratio   该参数是在尝试一个write ba ...

  5. BT5 set_config各个选项的配置

    最近研究了一下bt5的社会工程学工具SET,本来国内的bt5的资料就很少了,详细分析SET的资料就更少了,在各大网站找了找,都不靠谱,还是得自力更生啊,我在这里就把自己的过程写下来,希望对大家有点帮助 ...

  6. EBS Certifications

    Last Updated: September 29, 2017.  This summary cross-references published blog articles and the off ...

  7. C++进阶2. typedef用法

    C++ 中的typedef用法 20131011 Typedef在C++中是一个关键字,他的用法有多重,但是自己又说不全面,所以整理一下: 1.用类型的别名 typedef char* PChar; ...

  8. Viewpager+Fragmnet懒汉式注意

    1.new的时候不会触发setUserVisibleHint(): 2.setUserVisibleHint()在ViewPager中当前缓冲页跳转,可见到不可见或者不可见到可见的时候触发: 3.ge ...

  9. 重构Java代码的既有设计-影片出租店

    案例:计算每位顾客的消费金额并打印详细信息.顾客租赁了哪些影片,租期多长,根据租赁时间和影片类型计算出费用.影片分为3类:儿童片,新片,普通片.此外需计算该顾客的积分. Movie: public c ...

  10. java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方

    一道笔试题 22. 下面代码的运行结果为:() import java.io.*; import java.util.*; public class foo{ public static void m ...