[英]Rails Tutorial 2.2: Puma Server
我正在嘗試從Rails教程書中學習Rails,獲得了lubuntu,所以我可以嘗試獲得最佳體驗。 現在,我堅持要簡單易行的東西。
我們正在創建一個“玩具應用”,一個非常基本的推特之類的東西,但仍然在一開始,我們就使用了:
$ rails generate scaffold User name:string email:string
如果我沒記錯的話,要生成一個用戶表,然后:
$ rails db:migrate
我猜想更新一個預先存在的表結構(不確定,但是據說稍后將進行解釋)。
最后,我們應該運行以下命令:
$ rails server -b $IP -p $PORT
在一個差異選項卡中,我確實得到了這個錯誤:
~/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>'
有東西損壞了嗎? 我做錯了嗎? 我去檢查了我記得看到puma的文件(在app文件夾中),它在gem文件中:
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
我本來要放所有提到的文件,但這是大量的代碼,如果有用的話,我會發布它,我不想用可能無用的代碼來發送垃圾郵件。
$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
。 :-)
如果您在本地運行,則應該可以使用不帶參數的rails server
。 如果您使用的是Hartl教程,則假定您使用的是基於Web的IDE,該IDE需要額外的參數。
如果您使用的是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,默認情況下為localhost。
如果您在本地計算機上,請運行
rails s ### Rails x.x.x application starting in development on http://localhost:3000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.