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

40

这个文件 config.ru 在Sinatra项目中有什么作用?在我的项目证书中,使用了这样的代码:

require './app'
run Sinatra::Application

1
什么是“绳带”?您是不是想说“模板”? - Warren P
3个回答

44

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!'


11

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之上,它在内部使用rackup来在服务器和框架之间进行接口交互。因此,config.ru是任何基于Rack的程序的入口点。

它的作用是引导应用程序并将Sinatra::Application类传递给Rack,该类具有call类方法。

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


6

config.ru 是用于 Rackup 命令的默认配置文件,其中列出了对于 Rack 的一系列指令。

Rack 是一个接口和架构,提供领域特定语言(DSL),连接应用程序与 Web 世界。简而言之,它允许以最方便的方式构建 Web 应用程序,并处理请求、响应(以及许多其他与 Web 相关的技术)。

Sinatra 和 Rails 都是 Web 框架,因此它们都使用 Rack:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接