The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2022-08-25
ソフトウェア開発

Rubyエコシステムにおけるラックの役割

ニコラ・ニソリア

Rubyのエコシステムにおけるラックの役割について専門家から学び、Rubyのスキルをアップさせましょう。

と協力しながら ルビー ウェブフレームワーク it’s common to take things for granted. We know the framework will handle the HTTP requests and execute the middleware logic for us. As we get more curious we start wondering what is behind the scenes, there’s where we start hearing about Rack.

ラックとは?

について プロジェクト は、「モジュール式のRubyウェブ・サーバー・インターフェイス」と説明されている。Rackは、ウェブサーバー、ウェブフレームワーク、ミドルウェアのAPIを統合し、ウェブアプリケーションを作成するためのインターフェースである。

ラック・ルビー・スキーム

上の図にあるように、Rackはウェブアプリケーションとアプリケーションサーバーの中間的な役割を果たし、HTTPリクエストを最もシンプルな
可能な限り。

ラック・アプリケーション

Rackアプリケーションは、(クラスではなく)Rubyオブジェクトであり、次のようなレスポンスに応答します。 コール.引数を1つだけ取ります。 環境 の凍結されていない配列を返す。
の3つである:

  • について ステータス,
  • その ヘッダー,
  • そして ボディ.

    ラック・アプリケーションの詳細仕様については、こちらをご覧ください。 これ.

require 'rack'

クラス RackApp
  def call(env)
        ステータス = 200
        headers = { 'Content-Type' => 'text/html' }.
        body = ['<h1>マイラックアプリ<h1>']

    [ステータス、ヘッダー、ボディ]
  終了
終わり

ラック::ハンドラ

ハンドラはWebサーバとRackを接続します。Rack には Thin、WEBrick、FastCGI、CGI、SCGI、LiteSpeed 用のハンドラがあります。Rack をサポートする各アプリケーションサーバーは
ハンドラは通常、接続を作成するハンドラを提供します(Pumaは独自のハンドラを持ちます)。 MyHandler.run(myapp).2つ目のオプションのハッシュを渡せば、サーバー固有の設定を含めることができる。

シン・アプリケーション・サーバーの使用

Rack::Handler::Thin.run(app)

コンフィギュレーションを追加するデフォルトのファイルは コンフィグ で実行できる。 ラックアップ コマンドをコンソールに入力する。

ラック・ミドルウェア

Rackでは、ミドルウェア・アプリケーション(メインのウェブ・アプリケーションとアプリケーション・サーバーの間にあるアプリケーション)を作成することができます。これらのミドルウェア・アプリケーションは連結され、順次実行される。

ラック・ミドルウェアは、以下のすべての仕様を実装しなければならない。 ラック・アプリケーション そして、以下の点を満たすこと:

  • クラスでなければならない、
  • イニシャライザーは1つのパラメーター(メイン・アプリケーション)だけを受け取る、
  • そして次のミドルウェアやアプリケーションを呼び出す。
クラス RackMiddleware
def initialize(app)
app = app
end
def call(env)
app.call(env)
end
end

ラックの実践

これで基本がわかったので、Rackミドルウェアを使って最初のRackアプリケーションを作成し、Puma(アプリケーション・サーバー)を使って実行する準備が整った。

依存関係をインストールする

を持っていることを確認してください。 ラック 宝石と プーマ gemをインストールした。

gem rackをインストールする
gem pumaをインストールする

設定ファイルの作成

まず コンフィグ を使用する。
Rack::Builder DSL を使用してアプリケーションを実行し、ミドルウェアを追加します。

ラックアプリケーションの追加

その中で コンフィグ ファイルで定義したシンプルな Rack アプリケーションを追加します。
前のセクション

# config.ru

クラス RackApp
  def call(env)
    ステータス = 200
    headers = { 'Content-Type' =&gt; 'text/html' }.
    body = ['<h1>マイラックアプリ<h1>']

    [ステータス、ヘッダー、ボディ]
  終了
終わり

ラック・ミドルウェアの追加

ここでは、シンプルなミドルウェアにちょっとした変更を加え、実行後にサーバー・ソフトウェアをHTMLボディに追加するようにする。

# config.ru

クラス RackMiddleware
  def initialize(app)
    app = app
  終了

  def call(env)
    ステータス、ヘッダー、ボディ = @app.call(env)

    body << env['SERVER_SOFTWARE'].

    [ステータス、ヘッダー、ボディ]
  終了
終了

アプリケーション・サーバーの実行

最後のステップとして、サーバーを動かしてアプリケーションが動いているのを確認しよう。私たちの コンフィグ ファイルは次のようになる:

# config.ru

クラス RackApp
  def call(env)
    ステータス = 200
    headers = { 'Content-Type' =&gt; 'text/html' }.
    body = ['<h1>マイラックアプリ<h1>']

    [ステータス、ヘッダー、ボディ]
  終了
終わり

クラス RackMiddleware
  def initialize(app)
    app = app
  end

  def call(env)
    ステータス、ヘッダー、ボディ = @app.call(env)

    ボディ <&lt; env[&#039;SERVER_SOFTWARE&#039;].

    [ステータス、ヘッダー、ボディ]
  終了
終了

RackMiddleware を使う
RackApp.newを実行する

最後の行では、ミドルウェアの指定に 使用 でアプリケーションを実行する。 走る。実行する準備はできている ラックアップ をコンソールに表示し、サーバーが動作していることを確認する。アプリケーションが稼働しているポートを確認し、アクセスするとこのように表示されるはずだ:

ラックサーバーテキスト

結論

時には基本に立ち返り、私たちが扱っているテクノロジーについての洞察を学ぶことは良いことです。ラックを学ぶことで、アーキテクチャの概要が明確になり、その背後にある「魔法」が見えてくる。 Ruby Webフレームワーク.

協力バナー

関連記事

ソフトウェア開発

GraphQL Ruby。パフォーマンスについては?

GraphQLには、他のテクノロジーと同様に問題があり、そのいくつかはアーキテクチャに直接起因し、いくつかは他のアプリケーションで見られるものと同じである。しかし、その解決策は...

The Codest
トマシュ・シュカラデク 開発アーキテクト
ソフトウェア開発

アクティブレコードを使ったゼロからのシンプルなRubyアプリケーション

MVCは、アプリケーションの責任を分担して動きやすくするデザインパターンです。Railsは慣例的にこのデザインパターンに従っています。

The Codest
ダミアン・ワトロバ Software Engineer
E-commerce

Ruby on RailsはMVPを作るのに適した技術か?

最小実行可能製品(MVP)は、リーンスタートアップ手法の原則の一つである。その目的は、起業家が学習のプロセスをできるだけ早く開始できるようにすることである。

ニコラ・ニソリア

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese