2014-10-30 2 views
10

https://www.railstutorial.org/book/beginning#sec-rails_serverRails-учебник Глава 1: рельсы сервер не работает на Cloud9

Я достиг этого шага, и я использую Cloud9 среды. При запуске сервера в соответствии с листинге 1.7 на этом уроке, однако, я получаю эту ошибку:

[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>' 

Я пытался указать другой порт, но это не работает и Cloud9 среда предлагает мне I должен просто использовать переменную $ PORT.

Ошибка «Адрес уже используется - bind (2) для 0.0.0.0:8080 (Errno :: EADDRINUSE)» означает, что у меня уже есть сервер rails, но я этого не делаю. Я не совсем уверен, что делать здесь, и в учебнике не предлагается какой-либо метод устранения этой проблемы.

ответ

9

Я в конечном итоге начать учебник с нуля снова и он работал отлично, но кто-нибудь с этой проблемой в будущем может найти этот метод поиска и устранения неисправностей, которое я получил от поддержки команды Cloud9 полезно:


Try:

lsof -i:8080 

Это приложение, которое его занимает.

Если апач, остановить его с помощью:

sudo /etc/init.d/apache2 stop 

Надежда этот ответ полезным для тех, кто с этой проблемой.

16

я узнал, что вы можете использовать команду killall ruby, чтобы остановить любого из рубина процессов, которые помогли мне, потому что я по ошибке запустить команду rails server -b $IP -p $PORT на ~/workspace уровне в учебнике. Я нашел ответ в can't open rails server

+0

Пробовал работать killall ruby, но не смог найти никаких запущенных процессов. –

+2

Просто хотел сказать, что я столкнулся с этой точной проблемой в первый раз и был удовлетворен тем, что Googling сообщение об ошибке привело к решению - для моего собственного урока! Подписан, автор :-) – 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.

Вполне вероятно, что если вы будете ждать несколько минут (не более 2), операционная система освободит порт. Если нет, используйте произвольный номер порта около 5000 при каждом запуске rails server, например.

$ rails server -b $IP -p 6789 

Или, поскольку ваша IDE настолько сосательна, вы можете подумать об использовании другой IDE.

+0

«rails server -b $ IP -p $ PORT» - это команда, которую я использовал для получения ошибки выше. Он включен в мой вопрос –

+0

И использование номера выше 5000 тоже не помогает. Сервер запускается, но я не могу получить к нему доступ в браузере через: https://rails-tutorial-c9-myname.c9.io, как я должен быть в состоянии –

+0

@JoshBurson. Это означает, что ваша среда разработки не работает , – 7stud

1

Возможно, у вас остался другой сервер. Тот, который вы инициировали ранее в учебнике с помощью команды rails server. Вам нужно сначала закрыть другой, используя Ctrl + C, а затем попробуйте rails server -b $IP -p $PORT

Смежные вопросы