2014-10-30 6 views
10

https://www.railstutorial.org/book/beginning#sec-rails_serverRails-Tutorial Kapitel 1: Schienen-Server funktioniert nicht auf Cloud9

ich diesen Schritt erreicht haben, und ich bin die cloud9 Umgebung. Wenn ich den Server gemäß Listing 1.7 an diesem Tutorial laufen, jedoch bekomme ich diesen Fehler:

[email protected]:~/workspace/hello_app $ rails server -p $PORT -b $IP 
=> Booting WEBrick 
=> Rails 4.2.0.beta2 application starting in development on http://0.0.0.0:8080 
=> Run `rails server -h` for more startup options 
=> Ctrl-C to shutdown server 
[2014-10-30 21:44:22] INFO WEBrick 1.3.1 
[2014-10-30 21:44:22] INFO ruby 2.1.1 (2014-02-24) [x86_64-linux] 
Exiting /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:206:in `bind': Address already in use - bind(2) for 0.0.0.0:8080 (Errno::EADDRINUSE) 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:206:in `listen' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:461:in `block in tcp_server_sockets' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:232:in `each' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:232:in `foreach' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:459:in `tcp_server_sockets' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/utils.rb:75:in `create_listeners' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/server.rb:132:in `listen' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/server.rb:113:in `initialize' 
    from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:45:in `initialize' 
    from /usr/local/rvm/gems/[email protected]/gems/rack-1.6.0.beta/lib/rack/handler/webrick.rb:32:in `new' 
    from /usr/local/rvm/gems/[email protected]/gems/rack-1.6.0.beta/lib/rack/handler/webrick.rb:32:in `run' 
    from /usr/local/rvm/gems/[email protected]/gems/rack-1.6.0.beta/lib/rack/server.rb:288:in `start' 
    from /usr/local/rvm/gems/[email protected]/gems/railties-4.2.0.beta2/lib/rails/commands/server.rb:80:in `start' 
    from /usr/local/rvm/gems/[email protected]/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:80:in `block in server' 
    from /usr/local/rvm/gems/[email protected]/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:75:in `tap' 
    from /usr/local/rvm/gems/[email protected]/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:75:in `server' 
    from /usr/local/rvm/gems/[email protected]/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /usr/local/rvm/gems/[email protected]/gems/railties-4.2.0.beta2/lib/rails/commands.rb:17:in `<top (required)>' 
    from /home/ubuntu/workspace/hello_app/bin/rails:8:in `require' 
    from /home/ubuntu/workspace/hello_app/bin/rails:8:in `<top (required)>' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `load' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `call' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/lib/spring/client.rb:26:in `run' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/bin/spring:48:in `<top (required)>' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load' 
    from /usr/local/rvm/gems/[email protected]/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>' 
    from /home/ubuntu/workspace/hello_app/bin/spring:16:in `require' 
    from /home/ubuntu/workspace/hello_app/bin/spring:16:in `<top (required)>' 
    from bin/rails:3:in `load' 
    from bin/rails:3:in `<main>' 

Ich habe versucht, einen anderen Port angibt, aber das funktioniert nicht und die cloud9 Umwelt schlägt vor, ich mir sollte nur die Variable $ PORT verwenden.

Der Fehler "Adresse bereits verwendet - bind (2) für 0.0.0.0:8080 (Errno :: EADDRINUSE)" bedeutet, dass ich bereits einen Rails-Server ausgeführt habe, aber ich nicht. Ich bin mir nicht sicher, was ich hier tun soll und das Tutorial schlägt keine Methode vor, um dieses Problem zu beheben.

Antwort

9

Ich landete starten Sie das Tutorial von Grund auf wieder und es funktionierte gut, aber jemand mit diesem Problem in Zukunft kann diese Technik zur Problembehandlung finde ich von cloud9 Support-Team erhalten nützlich:


Versuchen:

lsof -i:8080 

Dies wird die App geben, die es besetzt.

Wenn Apache, nicht mehr verwenden:

sudo /etc/init.d/apache2 stop 

Hoffnung diese Antwort ist der Nutzen für jeden mit diesem Problem.

16

ich gelernt, dass man killall ruby den Befehl verwenden kann jede der Rubin-Prozesse zu stoppen, die mir geholfen, weil ich versehentlich den rails server -b $IP -p $PORT Befehl an der ~/workspace Ebene im Tutorial laufen hatte. Ich fand die Antwort in can't open rails server

+0

Versucht, killall Ruby ausgeführt, aber es konnte keine laufenden Prozesse finden. –

+2

Ich wollte nur sagen, dass ich genau zum ersten Mal auf dieses Problem gestoßen bin und war froh, dass das Googeln der Fehlermeldung zur Lösung geführt hat - für mein eigenes Tutorial! Signiert, der Autor :-) – mhartl

-2
$ rails server -b $IP -p $PORT 

Cloud9 uses the special environment variables $IP and $PORT to assign the IP address and port number dynamically. If you want to see the values of these variables, type echo $IP or echo $PORT at the command line.

Es ist wahrscheinlich, dass, wenn Sie ein paar Minuten warten (nicht mehr als 2), Ihr Betriebssystem des Port frei werden. Wenn nicht, verwenden Sie eine zufällige Portnummer über etwa 5.000 jedes Mal, wenn Sie rails server, z.

$ rails server -b $IP -p 6789 

Oder, weil Ihre IDE so sucky ist, könnten Sie eine andere IDE in Erwägung ziehen.

+0

"rails server -b $ IP -p $ PORT" ist der Befehl, den ich verwendet habe, um den Fehler oben zu bekommen. Es ist in meiner Frage enthalten –

+0

Und eine Nummer über 5000 hilft auch nicht. Der Server startet, aber ich kann nicht im Browser zugreifen über: https://rails-tutorial-c9-myname.c9.io, wie ich in der Lage sein sollte –

+0

@JoshBurson, Das heißt Ihre IDE funktioniert nicht . – 7stud

1

Wahrscheinlich hatten Sie gerade den anderen Server noch laufen. Der, den Sie früher im Lernprogramm mit dem Befehl rails server einleiten. Sie müssen die andere zuerst mit Ctrl + C herunterfahren, dann versuchen Sie erneut rails server -b $IP -p $PORT