hamayuzinの日記

エンジニアとかデータサイエンティストとかやってます。あの時 あれやってたな的な備忘録にできれば。

【Rails/seed_fu】railsでcapistrano deploy時に、seed fuを毎回自動で走らせたい

環境: rails5.1 ruby 2.4.1

seed fu いいよね。便利で。 capistrano deploy時に、seed fuを毎回自動で走らせたい時があったので その方法をメモ

注意 今回はstaging環境で、初期開発時に、社内テスト触る環境を毎回作るのがまんどくさくて、自動化した あまり やらないほうが良い気もする

自動化

lib/capistrano/tasks/seed_fu.rakeに 実行するコマンドを記述

namespace :seed_fu do
  task :apply do
    if fetch(:rails_env) == :staging
      on roles(:db) do
        within release_path do
          with rails_env: fetch(:rails_env) do
            execute :bundle,
                    :exec,
                    "rails db:seed_fu"
          end
        end
      end
    end
  end
end

あとはdeploy.rbに下記追記

namespace :deploy do
  # hogehoge
  
  task :apply_seedfu do
    on primary :db do
      invoke 'seed_fu:apply'
    end
  end
  
  #hugahuga
end
after 'deploy:migrating', 'deploy:apply_seedfu'

これで、migrationが実行されたあとに、seed_fuが実行されるはず