コンテンツへスキップ

HTTPサーバー

もう少し興味深い例として、HTTPサーバーがあります。

require "http/server"

server = HTTP::Server.new do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.local}"
end

address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen

上記のコードは、言語リファレンス全体を読めば理解できるようになりますが、すでにいくつかのことを学ぶことができます。

  • 他のファイルで定義されたコードをrequireできます。

    require "http/server"
    
  • 型の指定なしにローカル変数を定義できます。

    server = HTTP::Server.new(...)
    
  • HTTPサーバーのポートは、HTTP::Serverオブジェクトのbind_tcpメソッドを使用して設定されます(ポートは8080に設定されています)。

    address = server.bind_tcp 8080
    
  • オブジェクトにメソッドを呼び出す(またはメッセージを送信する)ことでプログラムを作成します。

    HTTP::Server.new(...)
    # ...
    Time.local
    # ...
    address = server.bind_tcp 8080
    # ...
    puts "Listening on http://#{address}"
    # ...
    server.listen
    
  • コードブロック、または単にブロックを使用できます。これは、コードを再利用し、関数型の世界からいくつかの機能を取得する非常に便利な方法です。

    HTTP::Server.new do |context|
      # ...
    end
    
  • 埋め込みコンテンツを含む文字列(文字列補間)を簡単に作成できます。この言語には、配列、ハッシュ、範囲、タプルなどを作成するための他の構文も用意されています。

    "Hello world! The time is #{Time.local}"