【问题标题】:What is this file config.ru, and what is it for?这个文件 config.ru 是什么,它的用途是什么?
【发布时间】:2019-07-31 01:22:32
【问题描述】:

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

require './app'
run Sinatra::Application

【问题讨论】:

  • 什么是“挂绳”?你是说“模板”吗?

标签: ruby sinatra


【解决方案1】:

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

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

  • HTTP 响应代码
  • 标头哈希
  • 响应正文,必须响应每一个

您可以使用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 然后负责接收传入请求(环境)并将其传递给您的应用程序提供的路由,然后传回响应代码、标头和响应正文。

【讨论】:

    【解决方案2】:

    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 时,

    发回“世界你好!”

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

    【讨论】:

      【解决方案3】:

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

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

      Sinatra 和 Rails 都是 Web 框架,所以它们都使用 Rack:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 2011-12-17
        • 2010-11-21
        • 1970-01-01
        相关资源
        最近更新 更多