TracksApp/tracks

View on GitHub
lib/tasks/tracks.rake

Summary

Maintainability
Test Coverage
namespace :tracks do
  desc 'Replace the password of USER with a new one.'
  task :password => :environment do
    require "io/console"

    user = User.find_by_login(ENV['USER'])
    if user.nil?
      puts "Sorry, we couldn't find user '#{ENV['USER']}'. To specify a different user, pass USER=username to this task."
      exit 0
    end

    puts "Changing Tracks password for #{ENV['USER']}."
    print "New password: "
    password = STDIN.noecho(&:gets).chomp
    print "\nRetype new password: "
    password_confirmation = STDIN.noecho(&:gets).chomp
    puts

    begin
      user.change_password(password, password_confirmation)
      puts "Password changed."
    rescue ActiveRecord::RecordInvalid
      puts "Sorry, we couldn't change #{ENV['USER']}'s password: "
      user.errors.full_messages.each { |msg| puts "- #{msg}\n" }
    end
  end
end