Elixir Ecto: 在Exrm发布版中执行移植脚本

方法一: 直接执行

CHAT_SERVER=/srv/chat_server/releases/0.1.0/bin/chat_server

$CHAT_SERVER rpc               \
Elixir.Application app_dir     \
"[chat_server, <<\"/priv/repo/migrations\">>]." 

# Using /srv/chat_server/releases/0.1.0/releases/0.1.0/chat_server.sh
# <<"/srv/chat_server/releases/0.1.0/lib/chat_server-0.1.0/priv/repo/migrations">>
$ $CHAT_SERVER rpc Elixir.Ecto.Migrator run                                               \ 
    "['Elixir.ChatServer.Repo',                                                           \
    <<\"/srv/chat_server/releases/0.1.0/lib/chat_server-0.0.1/priv/repo/migrations\">>,   \
    up, [{all, true}]]."

# Using /srv/chat_server/releases/0.1.0/releases/0.1.0/chat_server.sh
# [20160427034905,20160429032218,20160429091703,20160429093449,20160504091600,20160509040913]
migrations
    ├── 20160427034905_create_table_user.exs
    ├── 20160429032218_create_table_authorization.exs
    ├── 20160429091703_create_table_chat_group.exs
    ├── 20160429093449_create_table_chat_group_user.exs
    ├── 20160504091600_create_table_user_contact.exs
    └── 20160509040913_create_table_chat_dialog.exs 

方法二: 需要编写任务

defmodule :release_tasks do
  @moduledoc """
  http://blog.plataformatec.com.br/2016/04/running-migration-in-an-exrm-release/
  """
  def migrate do
    {:ok, _} = Application.ensure_all_started(:chat_server)
    path = Application.app_dir(:chat_server, "priv/repo/migrations")
    Ecto.Migrator.run(ChatServer.Repo, path, :up, all: true)
    :init.stop()
  end

  def rollback do
    {:ok, _} = Application.ensure_all_started(:chat_server)
    path = Application.app_dir(:chat_server, "priv/repo/migrations")
    Ecto.Migrator.run(ChatServer.Repo, path, :down, all: true)
    :init.stop()    
  end
end

执行移植

rel/chat_server/bin/chat_server command release_tasks migrate
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值