【问题标题】:Capistrano deployment changing directory for migrationsCapistrano 部署更改目录以进行迁移
【发布时间】:2023-03-31 04:05:01
【问题描述】:

我有一个不在存储库根目录中的 rails 应用程序。部署它时,其他一些静态文件将与它一起部署在父目录中。结构是这样的:

root
-- otherstuff
-- railsapp

当我使用 cap deploy:migrations 进行部署时,执行的 Capistrano 命令看起来像这样,这当然不起作用:

cd /u/apps/minicart/releases/20100717215044; rake RAILS_ENV=staging  db:migrate

我该如何改变它,使它成为:

cd /u/apps/minicart/releases/20100717215044/railsapp; rake RAILS_ENV=staging  db:migrate

我通过在 deploy:finalize_update 之后添加一个执行此命令的任务使其工作,但我更喜欢使用内置方法,而且每次部署都会执行我的破解版本。

任何建议将不胜感激。

提姆

【问题讨论】:

  • 每个部署的静态文件是否相同?
  • 不,它们也会变化,但不会那么频繁。

标签: ruby-on-rails deployment capistrano


【解决方案1】:

事实证明这很简单。

我在 deploy.rb 文件中添加了一个 deploy 命名空间,然后重新定义了 migrate 方法。现在我的方法在 cap deploy:migrations 上运行。

namespace :deploy do
  desc "Migrating the database"
  task :migrate, :roles => :app do
    run <<-CMD
      cd  #{release_path}/minicart; RAILS_ENV=#{stage} rake db:migrate
    CMD
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多