0

Rails アプリ (3.2.12) には、コンテンツ データベースとユーザー データベースの 2 つのデータベースがあります。deploy:migrate (ここではrakefile ) をオーバーライドして、「cap production deploy:cold」の間に移行が両方のターゲット データベースに対して適切に実行されるようにするにはどうすればよいですか。

基本的に、デプロイ中にこれを行う必要があります

 ** transaction: commit
  * 2013-10-16 02:26:15 executing `deploy:migrate'
  * executing "cd /home/deployer/apps/project/releases/20131015152439 && bundle exec rake RAILS_ENV=production  db:migrate"
  * executing "cd /home/deployer/apps/project/releases/20131015152439 && bundle exec rake RAILS_ENV=production  user:db:migrate"

どんな助けでも大歓迎です。

編集: deploy 名前空間でタスクを自分のタスクに置き換えました

namespace :deploy do
  set :migration_role, fetch(:migration_role, :db)

  task :migrate do
    on primary fetch(:migration_role) do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :rake, "db:migrate"
          execute :rake, "user:db:migrate"
        end
      end
    end
  end
  after 'deploy:updated', 'deploy:migrate'
end

これにより、「undefined method `primary'」というエラーがスローされます。

4

3 に答える 3

0

:primary にあるはずですか?

または

task :migrate, :only => { :primary => true }  

名前空間宣言の外側に「after」行を追加することもできます。

于 2013-10-16T18:08:14.057 に答える