2016-08-30 3 views
0

Я пытаюсь изучить Rails из учебника Rails Tutorial, получил lubuntu, чтобы я мог попытаться получить лучший опыт. Теперь я застрял на чем-то, что должно быть легко и прямо.Rails Tutorial 2.2: Puma Server

Мы создаем немного «игрушку» приложение очень простой твиттер, как вещь, еще в самом начале, мы использовали:

$ rails generate scaffold User name:string email:string 

Для создания таблицы пользователя, если я не ошибаюсь, а затем :

$ rails db:migrate 

Я думаю, чтобы обновить уже существующую структуру таблицы (не уверен, но это говорит, что потом все будет объяснено).

Наконец, мы должны работать так:

$ rails server -b $IP -p $PORT 

В закладке Differente, я и получил эту ошибку:

~/workspace/toy_app$ rails server -b $IP -p $PORT 
=> Booting Puma 
=> Rails 5.0.0.1 application starting in development on http://-p:3000 
=> Run `rails server -h` for more startup options 
Puma starting in single mode... 
* Version 3.4.0 (ruby 2.3.1-p112), codename: Owl Bowl Brawl 
* Min threads: 5, max threads: 5 
* Environment: development 
* Listening on tcp://-p:3000 
Exiting 
/var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:255:in `initialize': getaddrinfo: Name or service not known (SocketError) 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:255:in `new' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:255:in `add_tcp_listener' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:102:in `block in parse' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:85:in `each' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/binder.rb:85:in `parse' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/runner.rb:129:in `load_and_bind' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/single.rb:84:in `run' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/puma/launcher.rb:172:in `run' 
    from /var/lib/gems/2.3.0/gems/puma-3.4.0/lib/rack/handler/puma.rb:51:in `run' 
    from /var/lib/gems/2.3.0/gems/rack-2.0.1/lib/rack/server.rb:296:in `start' 
    from /var/lib/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/server.rb:79:in `start' 
    from /var/lib/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:90:in `block in server' 
    from /var/lib/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:85:in `tap' 
    from /var/lib/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:85:in `server' 
    from /var/lib/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!' 
    from /var/lib/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>' 
    from /home/zero/workspace/toy_app/bin/rails:9:in `require' 
    from /home/zero/workspace/toy_app/bin/rails:9:in `<top (required)>' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/client/rails.rb:28:in `load' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/client/rails.rb:28:in `call' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/client/command.rb:7:in `call' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/client.rb:30:in `run' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/bin/spring:49:in `<top (required)>' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/binstub.rb:11:in `load' 
    from /var/lib/gems/2.3.0/gems/spring-1.7.2/lib/spring/binstub.rb:11:in `<top (required)>' 
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' 
    from /home/zero/workspace/toy_app/bin/spring:13:in `<top (required)>' 
    from bin/rails:3:in `load' 
    from bin/rails:3:in `<main>' 

поврежденную ли что-нибудь? Я сделал что-то неправильно? Я пошел, чтобы проверить файлы, я вспомнил, что видел пуму (в папке приложения), и это в файле гем:

gem 'puma',   '3.4.0' 

И файл puma.rb (вынули комментарии):

threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i 
threads threads_count, threads_count 

port  ENV.fetch("PORT") { 3000 } 

environment ENV.fetch("RAILS_ENV") { "development" } 

plugin :tmp_restart 

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

ответ

1

$IP не определен в вашей среде, поэтому rails server пытается использовать -p в качестве IP-адреса. Попробуйте это:

rails server -b ${IP:-127.0.0.1} -p ${PORT:-3000} 

В качестве альтернативы, установить эти переменные окружения с export перед запуском rails server -b $IP -p $PORT:

export IP=127.0.0.1 
export PORT=3000 

Или, если вы хорошо с невыполнением Rails', просто забыть все это и запустить rails server. :-)

1

Если вы работаете локально, вы можете использовать rails server без аргументов. Если вы используете учебник Hartl, предполагается, что вы используете веб-среду IDE, для которой требуются дополнительные аргументы.

0

Если вы используете cloud based IDE, вам необходимо прослушать по телефону particular IP & PORT. Например, C9, вам необходимо прослушать 0.0.0.0 and 8080. Таким образом, у них есть установка environment variables, $IP & $PORT.

Если вы выполняете,

echo $IP ###gives 0.0.0.0 
echo $PORT ###gives 8080 

rails s -b $IP -p $PORT ##Rails x.x.x application starting in development on http://0.0.0.0:8080 

Опция -b связывает Rails на указанный IP, по умолчанию это локальный.

Если вы на локальном компьютере, запустите

rails s ### Rails x.x.x application starting in development on http://localhost:3000