这个文件 config.ru
在Sinatra项目中有什么作用?在我的项目证书中,使用了这样的代码:
require './app'
run Sinatra::Application
config.ru
是一个Rack配置文件(ru
代表"rackup")。Rack在支持Ruby和Ruby框架的Web服务器之间提供了最小的接口。它就像是一个Ruby实现的CGI,为Web服务器执行程序提供了标准协议。
这里的Rack run
命令意味着对于服务器请求,将Sinatra::Application
作为执行上下文,从中可以使用Sinatra的DSL。然后将main
上的所有DSL方法委托给这个类。
因此在这个config.ru
文件中,首先需要引入使用Sinatra DSL的app
代码,然后运行Sinatra框架。在Sinatra::Application
的上下文中,如果您的app.rb
包含以下内容:
get '/' do
'Hello world!'
end
get
块对于Rack来说意味着当有人尝试访问(GET)主页URL时,发送'Hello world!'
Rack提供了在支持Ruby和Ruby框架的Web服务器之间的最小接口。
该接口假设您有一个响应调用方法(类似于proc)并返回包含以下内容的数组的对象:
您可以使用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
类传递给Rack,该类具有call
类方法。
Sinatra::Application
随后负责接收传入请求(即env)并将其传递给您的应用程序提供的路由,然后返回响应代码、标头和响应正文。
config.ru
是用于 Rackup 命令的默认配置文件,其中列出了对于 Rack 的一系列指令。
Rack 是一个接口和架构,提供领域特定语言(DSL),连接应用程序与 Web 世界。简而言之,它允许以最方便的方式构建 Web 应用程序,并处理请求、响应(以及许多其他与 Web 相关的技术)。
Sinatra 和 Rails 都是 Web 框架,因此它们都使用 Rack: