Watchr ช่วยให้ TDD บน wordpress สนุกขึ้นอีก 100 เท่า

TDD คืออะไรไม่ขอกล่าว (แต่บอกไว้เลยมันทำให้การเขียน code ผมสนุกเว่อร์)

จนอยู่มาวันนึงได้เห็น Kamar ที่เอามาช่วย watch สำหรับการเขียน TDD บน Angular ก็แอบติดใจ ... เพราะมันสนุกและน่าสนใจมาก

เลยนั่งหาข้อมูลเพื่อจะนำมันมาเล่นกับ wordpress บ้างก็เลยได้ไปเจอกับ Watchr และ Growl

เริ่มด้วย Install Watchr

$ sudo gem install watchr
Successfully installed watchr-0.7
1 gem installed
Installing ri documentation for watchr-0.7...
Installing RDoc documentation for watchr-0.7...

หรือ

$ git clone git://github.com/mynyml/watchr.git
$ cd watchr
$ gem build watchr.gemspec
   Successfully built RubyGem
   Name: watchr
   Version: 0.7
   File: watchr-0.7.gem
$ sudo gem install watchr-0.7.gem
Successfully installed watchr-0.7
1 gem installed
Installing ri documentation for watchr-0.7...
Installing RDoc documentation for watchr-0.7...

และก็ Install Growl ด้วยการ download มา install ตามปกติ

จากนั้นลองสั่งสร้าง config watch ที่ project ของเรา watchr.rb

# บอกว่าให้ watch file.php ทั้งหมด
watch('./(.*).php') { |m| code_changed(m[0]) }
 
def code_changed(file)
# สั่งว่าเมื่อ file change จะให้ทำ ?
run "phpunit"
end
 
def run(cmd)
result = `cd Test && #{cmd}`
growl result rescue nil
end
 
def growl(message)
puts(message)
message = message.split("\n").last(3);
growlnotify = `which growlnotify`.chomp
 
title = message.find { |e| /FAILURES/ =~ e } ? "FAILURES" : "PASS"
if title == "FAILURES"
image = "~/.watchr_images/failed.png"
info = /\x1b\[37;41m\x1b\[2K(.*)/.match(message[1])[1]
else
image = "~/.watchr_images/passed.png"
info = /\x1b\[30;42m\x1b\[2K(.*)/.match(message[1])[1]
end
 
options = "-w -n Watchr --image '#{File.expand_path(image)}' --html '#{title}' -m '#{info}'"
system %(#{growlnotify} #{options} &)
end

เป็นอันเรียบร้อย จากนั้นก็เรียกใช้งานมันได้เลย

$ watchr watchr.rb

* อาจจะเจอ error เรื่องหา command ไม่เจอให้แก้ด้วยการ set path ให้ตรงครับ
04-PM
* ผมไม่ได้ install growl เลยไม่เห็นรูปเด้งตอนที่ pass หรือ fail ครับ

Reference:


Mils Burasakorn

Mils Burasakorn