什么是这个文件config.ru,它的用途是什么?

问题描述 投票:2回答:3

这个文件是什么config.ru,以及它在Sinatra项目中的用途是什么?在我的项目的挂绳中,这样的代码写成:

require './app'
run Sinatra::Application
ruby sinatra
3个回答
4
投票

config.ru.ru代表“rackup”)是一个Rack配置文件。 Rack在支持Ruby和Ruby框架的Web服务器之间提供了一个最小的接口。它就像是CGI的Ruby实现,它为Web服务器执行程序提供了标准协议。

Rack的run在这里意味着对服务器的请求,使Sinatra::Application成为可以使用Sinatra的DSL的执行环境。然后将main上的所有DSL方法委托给此类。

基本上在这个config.ru文件中发生的事情是这样的:

首先你需要你的app代码使用Sinatra的DSL然后运行Sinatra框架...所以在Sinatra::Application的上下文中,如果你的app.rb包含类似的东西

get '/' do
  'Hello world!'
end

在这种情况下,get块对Rack来说意味着什么

发回'Hello world!'

您的应用程序将在您的浏览器中显示给您。


2
投票

config.rurackup命令的默认配置文件,其中包含Rack的指令列表。

Rack是一种接口和体系结构,它提供特定于域的语言(DSL)并将应用程序与Web世界连接起来。换句话说,它允许以最方便的方式构建Web应用程序并处理请求,响应(以及许多其他Web相关技术)。

Sinatra和Rails都是Web框架,所以他们都使用Rack:

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

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


0
投票

Rack在支持Ruby和Ruby框架的Web服务器之间提供了一个最小的接口。

接口只假设您有一个响应调用方法的对象(如proc)并返回一个数组:

  • HTTP响应代码
  • 标题的哈希
  • 响应机构,必须对每个响应

您可以使用rackup命令运行基本的Rack服务器,该命令将在当前目录中搜索config.ru文件。

您可以使用以下命令创建最小的hello world服务器:

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

由于Sinatra就像Rails在Rack上构建一样,它在内部使用qazxsw poi来连接服务器和框架之间的接口。 qazxsw poi是任何基于Rack的程序的入口点。

它是什么引导应用程序并将rackup类传递给具有config.ru类方法的机架。

然后Sinatra::Application负责接收传入请求(env)并将其传递给应用程序提供的路由,然后传回响应代码,标题和响应正文。

© www.soinside.com 2019 - 2024. All rights reserved.