After digging around for a few days for the launch issue, I found out if I use
start_test_server_in_background(:timeout => 300)
the app will be fully launched successfully.
So for calabash command, the question become, how to pass in the timeout for cucumber command line?
I tried the following for cucumber version 0.9.167 and it's not working.
$ CONNECT_TIMEOUT=300 DEBUG=1 CALABASH_FULL_CONSOLE_OUTPUT=1 cucumber