web-dev-qa-db-ja.com

このファイルconfig.ruとは何ですか?それは何のためのものですか?

このファイルとはconfig.ru、そしてそれはシナトラプロジェクトでは何のためですか?プロジェクトの私のストラップには、そのようなコードが書かれています。

require './app'
run Sinatra::Application
11
Stas Chehovskih

config.ru.ruは「ラックアップ」の略)は、ラック構成ファイルです。ラックは、RubyおよびRubyフレームワークをサポートするWebサーバー間の最小限のインターフェースを提供します。これは、Ruby [〜#〜] cgi [〜#〜] Webサーバーがプログラムを実行するための標準プロトコルを提供します。

ここでのラックのrunは、サーバーへのリクエストの場合、Sinatra::ApplicationをSinatraのDSLを使用できる実行コンテキストにすることを意味します。 mainのすべてのDSLメソッドは、このクラスに委任されます。

したがって、基本的にこのconfig.ruファイルでは、次のようになります。

最初に、SinatraのDSLを使用するappコードが必要です。次に、Sinatraフレームワークを実行します... Sinatra::Applicationのコンテキストで、app.rbに次のようなものが含まれている場合

get '/' do
  'Hello world!'
end

getブロックは、ラックにとって何かを意味します。この場合(誰かがホームURLに[GET]にアクセスしようとすると、

「Hello world!」を送り返す

アプリケーションがブラウザーに表示するもの。

8
Emmanuel

config.ruRack の指示のリストを含む rackup コマンドのデフォルト設定ファイルです。

ラックは、ドメイン固有言語(DSL)を提供し、アプリケーションをWebの世界に接続するインターフェースおよびアーキテクチャーです。つまり、Webアプリケーションを構築し、リクエスト、レスポンス(およびその他の多くのWeb関連テクノロジー)を最も便利な方法で操作できます。

SinatraおよびRailsはWebフレームワークであるため、どちらもRackを使用します。

http://recipes.sinatrarb.com/p/middleware

https://guides.rubyonrails.org/Rails_on_rack.html

2
Axalix

ラックは、RubyおよびRubyフレームワークをサポートします。

インターフェースは、(procのような)呼び出しメソッドに応答し、以下の配列を返すオブジェクトがあることを前提としています。

  • HTTP応答コード
  • ヘッダーのハッシュ
  • それぞれに応答する必要がある応答本文

現在のディレクトリでconfig.ruファイルを検索するrackupコマンドを使用して、基本的なRackサーバーを実行できます。

次のようにして、最小限のhello worldサーバーを作成できます。

# config.ru
run Proc.new { |env| ['200', {'Content-Type' => 'text/html'}, ['Hello World']] }
# run this with the `rackup` command

Sinatraは、RailsがRackに基づいて構築されているため、内部でrackupを使用してサーバーとフレームワーク間のインターフェースを確立しています。config.ruは、Rackベースのプログラムへのエントリポイントです。 。

それは何ですかbootstrapアプリケーションを実行し、Sinatra::Applicationクラスをcallクラスメソッドを持つラックに渡します。

次に、Sinatra::Applicationは、着信要求(env)を受け取り、それをアプリケーションが提供するルートに渡し、応答コード、ヘッダー、および応答本文を返します。

0
max