2016-08-30 33 views
0

我想從Rails教程書中學習Rails,得到了lubuntu,所以我可以嘗試獲得最好的體驗。現在我被困在一些應該簡單而直接的事情上。Rails教程2.2:美洲獅服務器

我們正在創造一個小「玩具程序」一個很基本的Twitter類似的事情,還是在開始的時候,我們使用:

$ 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} 

另外,運行rails server -b $IP -p $PORT之前export設置這些環境變量:

export IP=127.0.0.1 
export PORT=3000 

或者,如果你的罰款與Rails的默認,就忘了這一切,並運行rails server。 :-)

1

如果你在本地運行,你應該可以使用rails server而無需參數。如果你正在使用Hartl教程,它假定你正在使用一個基於Web的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選項結合滑軌連接到指定的IP,默認爲本地主機。

如果你是在本地機器上,運行

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