WebブラウザがHTMLフォームに入力された名前や年齢をWebブラウザにリクエストしてもWebサーバがレスポンスしない。
macOSでAtomというテキストエディタで、
HTMLフォームに名前と年齢を入力すると挨拶して頂けるだけのWebアプリを作らせて頂いております。
ファイル/フォルダ構成は下記のようになります。
sinatra-web
└ views/
└ index.erb
└ .ruby-version
└ app.rb
まず、.ruby-versionは以下のようになっております。
3.0.0
それから、app.rbには
require 'sinatra'
get '/' do
erb :index
end
post '/' do
erb :index
end
と記させていただきました。
あと、views/index.erbには
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>タイトル</title>
</head>
<body>
<form action="/" method="POST">
<label>名前: <input type="text" name="target_name"></label>
<label>年齢: <input type="number" age="target_age"></label>
<input type="submit" value="送信">
</form>
<% name = params['target_name'] %>
<% age = params['target_age'] %>
<% time_japan = Time.now %>
<p>今は<%= time_japan.hour %></p>
<% if 6 <= time_japan.hour && time_japan.hour < 12 %>
<p>おはよう、<%= name %>さん(<%= age %>歳)</p>
<% elsif 12 <= time_japan.hour && time_japan.hour < 18 %>
<p>こんにちは、<%= name %>さん(<%= age %>歳)</p>
<% else %>
<p>こんばんは,<%= name %>さん(<%= age %>歳)</p>
<% end %>
</body>
</html>
と記させていただきました。
それから、Webサーバ(Puma)を起動させるためにターミナルに下記のコマンドを入力させて頂きました。
$ ruby app.rb -o $IP -p $PORT
ターミナル画面に下記のようなログが出ました。
== Sinatra (v2.1.0) has taken the stage on 4567 for development
with backup from Puma
Puma starting in single mode...
* Puma version: 5.2.1 (ruby 3.0.0-p0) ("Fettisdagsbulle")
* Min threads: 0
* Max threads: 5
* Environment: development
* PID: 61781
== Sinatra has ended his set (crowd applauds)
/Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/ge
ms/puma-5.2.1/lib/puma/binder.rb:288:in `initialize': getaddrinf
o: nodename nor servname provided, or not known (SocketError)
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:288:in `new'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:288:in `add_tcp_li
stener'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:169:in `block in p
arse'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:152:in `each'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:152:in `parse'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/runner.rb:144:in `load_and_b
ind'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/single.rb:44:in `run'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/launcher.rb:181:in `run'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/rack/handler/puma.rb:72:in `run'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1565:in `start
_server'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1499:in `run!'
from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/main.rb:45:in `block i
n <module:Sinatra>'
それからターミナルに下記のコードを入力しました。
$ ruby app.rb
ターミナル画面に下記のようなログが出ました。
== Sinatra (v2.1.0) has taken the stage on 4567 for development
with backup from Puma
Puma starting in single mode...
* Puma version: 5.2.1 (ruby 3.0.0-p0) ("Fettisdagsbulle")
* Min threads: 0
* Max threads: 5
* Environment: development
* PID: 61871
* Listening on http://127.0.0.1:4567
* Listening on http://[::1]:4567
Use Ctrl-C to stop
上記のようなログを維持したまま、views/index.erbをAtomテキストエディタのPackagesのPreview HTMLのEnable Previewを押させて頂いたら、下記の画面が表示されました。
それから名前と年齢の入力欄に記入をさせて頂きました。下記の通りです。
そして送信ボタンを押させて頂きました。送信結果は下記の通りになりました。
タイトルの通り、WebブラウザがHTMLフォームに入力された名前や年齢をWebブラウザにリクエストしてもWebサーバがレスポンスしませんでした。
0 likes


