这个文件config.ru是什么,在Sinatra项目中有什么用?在我的项目挂绳中,编写了这样的代码:
require './app'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)
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
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!”
您的应用程序将在浏览器中显示给您。
Rack 在支持 Ruby 和 Ruby 框架的 web 服务器之间提供了一个最小的接口。
该接口只是假设您有一个响应调用方法(如 proc)并返回一个数组的对象:
您可以使用rackup将config.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 然后负责接收传入的请求(环境)并将其传递到您的应用程序提供的路由,然后传回响应代码、标头和响应正文。
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |