【发布时间】:2019-07-31 01:22:32
【问题描述】:
这个文件config.ru 是什么,它在 Sinatra 项目中的用途是什么?在我的项目挂绳中,写了这样的代码:
require './app'
run Sinatra::Application
【问题讨论】:
-
什么是“挂绳”?你是说“模板”吗?
这个文件config.ru 是什么,它在 Sinatra 项目中的用途是什么?在我的项目挂绳中,写了这样的代码:
require './app'
run Sinatra::Application
【问题讨论】:
Rack 在支持 Ruby 和 Ruby 框架的网络服务器之间提供了一个最小接口。
该接口只是假设您有一个响应调用方法(如 proc)并返回一个数组的对象:
您可以使用rackup 命令运行基本机架服务器,该命令将在当前目录中搜索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 然后负责接收传入请求(环境)并将其传递给您的应用程序提供的路由,然后传回响应代码、标头和响应正文。
【讨论】:
config.ru(.ru 代表“rackup”)是一个机架配置文件。 Rack 在支持 Ruby 和 Ruby 框架的网络服务器之间提供了一个最小接口。这就像 CGI 的 Ruby 实现,它为 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 时,
发回“世界你好!”
您的应用程序将在您的浏览器中显示给您。
【讨论】:
config.ru 是rackup 命令的默认配置文件,其中包含Rack 的指令列表。
Rack 是一种接口和架构,它提供一种特定领域的语言 (DSL),并将应用程序与 Web 世界连接起来。简而言之,它允许以最方便的方式构建 Web 应用程序并处理请求、响应(以及许多其他与 Web 相关的技术)。
Sinatra 和 Rails 都是 Web 框架,所以它们都使用 Rack:
【讨论】: