此文件config.ru
是什么?在Sinatra项目中有什么用途?在我的项目挂绳中,编写了这样的代码:
require './app'
run Sinatra::Application
答案 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)并返回带有以下内容的数组:
您可以使用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),并将其传递到应用程序提供的路由,然后传递回响应代码,标头和响应正文。