edo1z blog

プログラミングなどに関するブログです

capistrano 3

capistrano2を使っていましたが3を使うことにします。

capifyではなくcap installによって初期化します。 ぱっと見あんまり変わってないようで全然分かりませんし、参考ブログみつつやってもエラーでまくります。

cap staging deployとやると、下記エラーがでます。 Stage not set, please call something such as cap production deploy, where production is a stage you have defined.

cap -Tとやると、下記エラーがでます。 cap aborted! Don't know how to build task 'load:defaults'

/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/gems/capistrano-3.1.0/lib/capistrano/dsl.rb:14:in `invoke'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/gems/capistrano-3.1.0/lib/capistrano/application.rb:47:in `load_imports'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/gems/capistrano-3.1.0/lib/capistrano/application.rb:24:in `load_rakefile'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/gems/capistrano-3.1.0/lib/capistrano/application.rb:15:in `run'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/gems/capistrano-3.1.0/bin/cap:3:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/bin/cap:23:in `load'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/bin/cap:23:in `<main>'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/bin/ruby_executable_hooks:15:in `eval'
/usr/local/rvm/gems/ruby-2.0.0-p451@rails3/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)

悲しいです。

Capistrano 3: Setting a Default Stageここに何となくそれっぽいことが書いてあるので調べてみます。

あら、Capfileがある場所でやるとできるな。2の場合確かどこでもできたんだけどな。まあ解決したな。

staging.rbに下記を設定して、cap staging deployしてみたらエラーがでました。

role :app, %w{hoge@hoge.biz}
role :web, %w{hoge@hoge.biz}
role :db,  %w{hoge@hoge.biz}

server 'hoge.biz', user: 'hoge', roles: %w{web app}, my_property: :my_value

server 'hoge.biz',
   user: 'hoge',
   ssh_options: {
    keys: %w(/hoge/.ssh/id_rsa),
    forward_agent: true,
   }
DEBUG [725731e3] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/hoge/git-ssh.sh /usr/bin/env git ls-remote git@github.com:hoge/hoge.git )
DEBUG [725731e3] GIT_ASKPASS=/bin/echo: Command not found.
DEBUG [725731e3] Finished in 0.067 seconds with exit status 1 (failed).

GIT_ASKPASSっていう環境変数に値を入れることができないのだ。これはcapistranoとか俺が悪いんじゃなくサクラサーバのレンタルサーバが環境変数の設定を禁止してるからか!何度もやっちゃったよ!