这个文件是什么config.ru
,以及它在Sinatra项目中的用途是什么?在我的项目的挂绳中,这样的代码写成:
require './app'
run Sinatra::Application
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!'
您的应用程序将在您的浏览器中显示给您。
config.ru
是rackup命令的默认配置文件,其中包含Rack的指令列表。
Rack是一种接口和体系结构,它提供特定于域的语言(DSL)并将应用程序与Web世界连接起来。换句话说,它允许以最方便的方式构建Web应用程序并处理请求,响应(以及许多其他Web相关技术)。
Sinatra和Rails都是Web框架,所以他们都使用Rack:
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上构建一样,它在内部使用qazxsw poi来连接服务器和框架之间的接口。 qazxsw poi是任何基于Rack的程序的入口点。
它是什么引导应用程序并将rackup
类传递给具有config.ru
类方法的机架。
然后Sinatra::Application
负责接收传入请求(env)并将其传递给应用程序提供的路由,然后传回响应代码,标题和响应正文。