Cloud9 a tutoriál k Ruby on Rails

Datum vydání: 2015-01-18 10:32:14

Tutoriál od Michaela Hartla k Ruby on Rails využívá pro vývoj projektů vývojové prostředí Cloud9. Během zkoušení jsem narazila na některé chybové hlášky, které lze jednoduše vyřešit následujícím způsobem.

No application seems to be running here!

Po určité době nečinnosti či po přihlášení po pár dnech, se může objevit tato chybová hláška:

No application seems to be running here!
Cloud9 can't get you to your requested workspace. Here are some suggestions on how to figure out what's going on:
Check that the workspace name (rails-tutorial) and username (jitka) are typed correctly. Check that the server is successfully running on Cloud9:
If the server hit an error, the output window will have a message telling you what it is
If you're in the middle of debugging code, your server might be paused right now
The server might be running on a different port; make sure it's on port $PORT with $IP as the IP address

Řešení

Problém bývá způsoben tím, že server se zastavil a je nutné ho znova spustit příkazem rails server popsaného v Listing 1.7: Running the Rails server on the cloud IDE:

$ cd ~/workspace/hello_app/
$ rails server -b $IP -p $PORT

Address already in use - bind(2) for 0.0.0.0:8080 (Errno::EADDRINUSE)

Při zkoušení druhé aplikace toy_app dle tutoriálu se mi nedařilo spustit server na Cloud9. Začátek vývoje aplikace je shodný s tvorbou aplikace hello_app, takže jsem nikde neviděla chybu a po nahrání na heroku mi aplikace běžela bez problémů. Cloud9 mi však při pokusu o spuštění serveru vyhodil tuto hlášku:

uzivatel@rails-tutorial:~/workspace/toy_app $ rails server -b $IP -p $PORT
=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://0.0.0.0:8080
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-01-18 16:53:00] INFO  WEBrick 1.3.1
[2015-01-18 16:53:00] INFO  ruby 2.1.4 (2014-10-27) [x86_64-linux]
Exiting
/usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/socket.rb:206:in `bind': Address already in use - bind(2) for 0.0.0.0:8080 (Errno::EADDRINUSE)
...

Řešení

Příčina byla v tom, že jsem měla spuštěný server ještě z aplikace hello_app. Server nešel pustit podruhé, nedokáže běžet současně, využívá totiž shodné URL. Teprve poté, co jsem spuštěný server z hello_app ukončila pomocí CTRL + C, tak šel spustit nový server pro aplikaci toy_app z adresáře toy_app.

$ cd ~/workspace/toy_app/
$ rails server -b $IP -p $PORT