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

时间:2019-03-09 00:46:25

标签: ruby sinatra

此文件config.ru是什么?在Sinatra项目中有什么用途?在我的项目挂绳中,编写了这样的代码:

require './app'
run Sinatra::Application

2 个答案:

答案 0 :(得分:4)

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

机架的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!”

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

答案 1 :(得分:0)

机架在支持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上构建一样,它在内部使用rackup在服务器和框架之间建立接口。因此config.ru是任何基于Rack的程序的入口点。

它是什么引导应用程序并将Sinatra::Application类传递到具有call类方法的机架。

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