いい加減サーバサイドのアプリケーション開発したいけど、後々の運用面のことや勉強も兼ねてもう少しCapistranoいじることにしました。
テスト環境であるVirtualBox上のDebianと、本番環境のさくらVPSのDebianにそれぞれ必要なRubyGemsインストールしようと思ったのですが、折角なのでこれをCapistranoから行おうと思って最初こんな感じのレシピを書いていました
task :gemlist do sudo "gem list" end
実行すると
$ cap test_env gemlist * executing `test_env' triggering start callbacks for `gemlist' * executing `multistage:ensure' * executing `gemlist' * executing "sudo -p 'sudo password: ' gem list" servers: ["localhost"] [localhost] executing command *** [err :: localhost] sudo *** [err :: localhost] : *** [err :: localhost] no tty present and no askpass program specified *** [err :: localhost] command finished in 222ms
という感じで怒られてしまいました。
”Capistrano sudo”でググッていたらhttp://arika.org/2010/03/03/capistrano:title=を見つけたので
task :gemlist do sudo "gem list",:pty => true end
と、,:pty => trueというオプションをつけることでコマンド実行時にsudoパスワードを要求されるのでとりあえずこれで実行できるようになりました
現時点のレシピはこんな感じになりました。
require "rubygems" require "capistrano/ext/multistage" set :application, "setup_gems" task :gemlist do sudo "gem list",:pty => true end task :geminstall do sudo "gem install bundle json sinatra mongo mongoid ",:pty => true end