【Ruby】【Rails】手間な実行コマンドはRakeタスクに書いて行くようにした。
あるプロジェクトで、Railsを使っているのですが
Rails標準のmigrateを使っていたのですが、Cookpad社の以下の記事が
公開された後、ridgepoleを使い始めました。
そして、自分も個人でridgepoleを検証していたのですが・・・
コマンドの引数が多くてすぐに覚えられない!ということがわかりました。
# RailsのプロジェクトでDry runを実行してみるの例 bundle exec ridgepole -c config/database.yml -E #{Rails.env} -f #{Rails.root}/Schemafile --apply --dry-run
わかっている人にとってはすぐに理解できるコマンドですし
打ち慣れていればパパッと出てくると思います。
しかし、長いので自分でもまるっと書きたくないです。
そこでRubyを使っているので、タスク化しよう!と考えて書いてみました。
※Rails 4.2.1で動作確認しています。
# "lib/tasks/ridgepole.rake" というファイルを作成して記述してあります。 # ridgepoleを実行するためのタスク namespace :ridgepole do desc "Exec Apply Dry Run" task apply_dry_run: :environment do exec "bundle exec ridgepole -c config/database.yml -E #{Rails.env} -f #{Rails.root}/Schemafile --apply --dry-run" end desc "Exec Apply" task apply: :environment do exec "bundle exec ridgepole -c config/database.yml -E #{Rails.env} -f #{Rails.root}/Schemafile --apply" end desc "Exec Export Schemafile" task export: :environment do exec "bundle exec ridgepole -c config/database.yml -E #{Rails.env} --export -o Schemafile" end end
自分のマシンで実行したところ、特に問題なくできているので
まずはこれを使っていこうかと思います。
もしかしたらサーバへのマイグレートする際に何かあるかもですが
そのときになったらやろうと思います。
ridgepole便利!
また、ridgepoleに限らず、他のコマンドに関しても
このように書けば、メンバーへの細かい説明などが省けるので
非情に有効な手段だと思いました。
余談
・ridgepoleの有識者が作っていたのを、見よう見まねで作ったRakeタスクなので
何か言われたら記事を消そう。。。
・すでにタスク化されたものがあるっぽい。。。?