概要
Capistrano3ではcapコマンド実行時に環境を指定する必要があります 
レシピ内で環境ごとに設定した値を参照する方法を紹介します 
また今回紹介する方法以外にも様々な方法があるのであくまで参考程度に御覧ください
環境
- CentOS 6.6 64bit
- Capistrano 3.4.0
環境ごとの設定を記載する
cap installを使って初期設定をするとconfig/deploy/production.rb とconfig/deploy/staging.rbというファイルができます 
これに設定ごとの値を設定します
例えば以下の設定をそれぞれのファイルに記載してください
- config/deploy/production.rb
set :env, "prd"- config/deploy/staging.rb
set :env, "stg"「:env」というシンボルに値をsetします 
この :env をレシピ側受け取って処理してみます
レシピ側で値を取得する
Capistranoのレシピは「lib/capistrano/tasks/sample.rake」に作成しているものとします 
例えばあるレシピ上でシンボルを取得するには以下のようにします
namespace :test do
  desc 'this is test task'
  task :do_test do
    on roles :all do
      puts fetch(:env)
    end
  end
end見ていただければ一目瞭然ですが、fetchというメソッドをタスク内で使用することで値を取得できます 
以下のように書くことも可能です
puts "#{fetch(:env)}"変数展開の形でも記載できます
こんな感じでconfig用のruby側で必要な値をsetしてそれをレシピ側でfetchするのが簡単です 
そもそもsetするときにJsonから読み取ってsetするなんてこともできると思います
 
0 件のコメント:
コメントを投稿