| # standalone roster server |
| task :server => [:bundle, :listen] do |
| ENV['RACK_ENV']='development' |
| at_exit {sleep 0.5} |
| sh 'bundle exec passenger start' |
| end |
| |
| file 'Gemfile.lock' => 'Gemfile' do |
| sh 'bundle update' |
| touch 'Gemfile.lock' |
| end |
| |
| # setup authentication |
| task :auth do |
| require 'etc' |
| require 'io/console' |
| require 'base64' |
| |
| user = ENV['USER'] || ETC.getlogin |
| STDOUT.write "Enter password for #{user}: " |
| password = STDIN.noecho(&:gets).chomp |
| ENV['HTTP_AUTHORIZATION'] = "Basic #{Base64.encode64("#{user}:#{password}")}" |
| STDOUT.puts |
| end |
| |
| desc 'install dependencies' |
| task :bundle => 'Gemfile.lock' do |
| require 'bundler' |
| Bundler.require(:default, :development) |
| end |
| |
| # restart server when files update |
| task :listen => :bundle do |
| dirs = [ |
| File.expand_path('..', File.realpath(__FILE__)), |
| File.expand_path('../../../lib', File.realpath(__FILE__)) |
| ] |
| |
| listener = Listen.to(*dirs) do |modified, added, removed| |
| puts "detected update: #{(modified + added + removed).join(', ')}" |
| FileUtils.touch "#{dirs.first}/tmp/restart.txt" |
| end |
| |
| listener.ignore /~$/ |
| listener.ignore /^\..*\.sw\w$/ |
| listener.ignore /passenger.\d+\.(log|pid(\.lock)?)$/ |
| |
| listener.start |
| end |
| |