Autotest for Sinatra

Guard ----- Add this to a file named Guardfile in your app directory: ```ruby # gem install guard guard-minitest # https://github.com/guard/guard#readme guard 'minitest' do watch(%r{^app/(.+)\.rb$}) { |m| "test/app/#{m[1]}_test.rb" } watch(%r{^lib/(.+)\.rb$}) { |m| "test/lib/#{m[1]}_test.rb" } watch(%r{^test/(.+)\.rb$}) { |m| "test/#{m[1]}.rb" } end ``` Watchr ------ Put this in test/test.watchr ([inspired by Padrino](https://raw.github.com/padrino/padrino-recipes/master/files/watchrs/test.watchr)): ```ruby # # From https://raw.github.com/padrino/padrino-recipes/master/files/watchrs/test.watchr # # install watchr # $ gem install watchr # # Run With: # $ watchr test.watchr # # -------------------------------------------------- # Helpers # -------------------------------------------------- def run(cmd) exec = "bundle exec ruby #{cmd}" puts(exec) system(exec) end def run_all system("bundle exec rake test") end # -------------------------------------------------- # Watchr Rules # -------------------------------------------------- watch("^lib/(.*)\.rb") { |m| run("test/lib/#{m[1]}_test.rb") } watch("^(.*)/controllers/(.*).rb") { |m| run("test/#{m[1]}/controllers/#{m[2]}_controller_test.rb") } watch("^test/(.*)/controllers/(.*)_test.rb") { |m| run("test/#{m[1]}/controllers/#{m[2]}_test.rb") } watch("^(.*)/models/(.*).rb") { |m| run("test/#{m[1]}/models/#{m[2]}_test.rb") } watch("^test/(.*)/(.*)_test.rb") { |m| run("test/#{m[1]}/models/#{m[2]}_test.rb") } watch("test.*/test_helper\.rb") { run_all } watch("^test/(.*)_test\.rb") { |m| run("test/#{m[1]}_test.rb") } # -------------------------------------------------- # Signal Handling # -------------------------------------------------- # Ctrl-\ or Ctrl-รถ (Swedish keyboard) Signal.trap('QUIT') do puts "Quitting..." abort("\n") end # Ctrl-C Signal.trap('INT') do puts " --- Running all tests ---\n\n" run_all end # Find your signals... #Signal.list.each do |name, num| # Signal.trap(num) do # puts "#{name}" # end rescue "xx" #end ``` Put this in .bash\_profile or .zsh/aliases: ```ruby alias autotest='watchr test/test.watchr' ``` Install watchr: ```ruby gem install watchr ``` Test your code: ```ruby exec # reload profile autotest ``` You can also use [Guard](https://github.com/guard/guard) or autotest. Although improvements have been made during the years, they are all IMHO flawed pieces of software and badly documented.