lib/recipes/rails.rb in capitate-0.1.9 vs lib/recipes/rails.rb in capitate-0.2.1

- old
+ new

@@ -2,21 +2,21 @@ namespace :rails do desc <<-DESC Create database yaml in shared path. - db_name: Database name (rails). + *db_name*: Database name (rails). - set :db_name, "app_db_name" + @set :db_name, "app_db_name"@ - db_user: Database user (rails). + *db_user*: Database user (rails). - set :db_user, "app_db_user" + @set :db_user, "app_db_user"@ - db_pass: Database password (rails). + *db_pass*: Database password (rails). - set :db_pass, "the_password" + @set :db_pass, "the_password"@ DESC task :setup do # Settings @@ -29,7 +29,54 @@ end desc "Make symlink for database yaml" task :update_code do run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" + end + + desc <<-DESC + Tail production log files. (http://errtheblog.com/posts/19-streaming-capistrano) + DESC + task :tail_logs, :roles => :web do + run "tail -f #{shared_path}/log/production.log" do |channel, stream, data| + puts # for an extra line break before the host name + puts "#{channel[:host]}: #{data}" + break if stream == :err + end + end + + + desc <<-DESC + Check production log files in TextMate. (http://errtheblog.com/posts/19-streaming-capistrano) + DESC + task :mate_logs, :roles => :app do + + require 'tempfile' + tmp = Tempfile.open('w') + logs = Hash.new { |h,k| h[k] = '' } + + run "tail -n500 #{shared_path}/log/production.log" do |channel, stream, data| + logs[channel[:host]] << data + break if stream == :err + end + + logs.each do |host, log| + tmp.write("--- #{host} ---\n\n") + tmp.write(log + "\n") + end + + exec "mate -w #{tmp.path}" + tmp.close + end + + desc <<-DESC + Remotely console. (http://errtheblog.com/posts/19-streaming-capistrano) + DESC + task :console, :roles => :app do + input = '' + run "cd #{current_path} && ./script/console #{ENV['RAILS_ENV']}" do |channel, stream, data| + next if data.chomp == input.chomp || data.chomp == '' + print data + channel.send_data(input = $stdin.gets) if data =~ /^(>|\?)>/ + end end end