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

Sta*_*kih 4 ruby sinatra

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

require './app'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

Axa*_*lix 6

config.ru是rackup命令的默认配置文件,其中包含Rack的指令列表。

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

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

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

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


Emm*_*uel 5

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
Run Code Online (Sandbox Code Playgroud)

get在这种情况下(当某人尝试访问[GET]主页网址时,该阻止将对Rack有意义)

发送回“ Hello world!”

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


max*_*max 5

Rack 在支持 Ruby 和 Ruby 框架的 web 服务器之间提供了一个最小的接口。

该接口只是假设您有一个响应调用方法(如 proc)并返回一个数组的对象:

  • HTTP 响应代码
  • 标题的哈希
  • 响应主体,必须响应每个

您可以使用rackupconfig.ru在当前目录中搜索文件的命令运行基本的 Rack 服务器。

您可以使用以下命令创建一个最小的 hello world 服务器:

# config.ru
run Proc.new { |env| ['200', {'Content-Type' => 'text/html'}, ['Hello World']] }
# run this with the `rackup` command
Run Code Online (Sandbox Code Playgroud)

由于 Sinatra 就像 Rails 构建在 Rack 上,因此它在rackup内部用于服务器和框架之间的接口。config.ru因此是任何基于 Rack 的程序的入口点。

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

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