这个文件 config.ru 是什么,它有什么用?
What is this file config.ru, and what is it for?
这个文件是什么 config.ru
,它在 Sinatra 项目中有什么用?在我的项目的挂绳里,写着这样的代码:
require './app'
run Sinatra::Application
config.ru
是 rackup command with a list of instructions for Rack.
的默认配置文件
Rack 是一种界面和架构,它提供领域特定语言 (DSL) 并将应用程序与网络世界连接起来。简而言之,它允许构建 Web 应用程序并以最方便的方式处理请求、响应(以及许多其他与 Web 相关的技术)。
Sinatra 和 Rails 都是 web 框架,所以他们都使用 Rack:
config.ru
是一个 Rack configuration file (ru
stands for "rackup"). Rack provides a minimal interface between web servers that support Ruby and Ruby frameworks. It's like a Ruby implementation of a CGI,它为 Web 服务器执行程序提供了一个标准协议。
Rack 的 run
命令在这里意味着对服务器的请求,使 Sinatra::Application
可以使用 Sinatra 的 DSL 的执行上下文。然后 main
上的所有 DSL 方法都委托给这个 class.
所以在这个 config.ru
文件中,首先需要使用 Sinatra 的 DSL 的 app
代码,然后 运行 Sinatra 框架。在 Sinatra::Application
的上下文中,如果您的 app.rb
包含以下内容:
get '/' do
'Hello world!'
end
get
块对 Rack 来说意味着一些东西,在这种情况下,当有人试图访问 (GET) 家 url 时,发回 'Hello world!'
Rack 在支持 Ruby 和 Ruby 框架的网络服务器之间提供最小接口。
接口只是假定您有一个 object 响应调用方法(如 proc)和 returns 一个数组:
- HTTP 响应代码
- headers
的哈希值
- 回复body,必须回复每个
您可以使用 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 的程序的入口点。
它所做的是 bootstrap 应用程序并将 Sinatra::Application
class 传递给具有 call
class 方法的机架。
Sinatra::Application
然后负责获取传入请求(env)并将其传递给应用程序提供的路由,然后传回响应代码 headers 和响应 body.
这个文件是什么 config.ru
,它在 Sinatra 项目中有什么用?在我的项目的挂绳里,写着这样的代码:
require './app'
run Sinatra::Application
config.ru
是 rackup command with a list of instructions for Rack.
Rack 是一种界面和架构,它提供领域特定语言 (DSL) 并将应用程序与网络世界连接起来。简而言之,它允许构建 Web 应用程序并以最方便的方式处理请求、响应(以及许多其他与 Web 相关的技术)。
Sinatra 和 Rails 都是 web 框架,所以他们都使用 Rack:
config.ru
是一个 Rack configuration file (ru
stands for "rackup"). Rack provides a minimal interface between web servers that support Ruby and Ruby frameworks. It's like a Ruby implementation of a CGI,它为 Web 服务器执行程序提供了一个标准协议。
Rack 的 run
命令在这里意味着对服务器的请求,使 Sinatra::Application
可以使用 Sinatra 的 DSL 的执行上下文。然后 main
上的所有 DSL 方法都委托给这个 class.
所以在这个 config.ru
文件中,首先需要使用 Sinatra 的 DSL 的 app
代码,然后 运行 Sinatra 框架。在 Sinatra::Application
的上下文中,如果您的 app.rb
包含以下内容:
get '/' do
'Hello world!'
end
get
块对 Rack 来说意味着一些东西,在这种情况下,当有人试图访问 (GET) 家 url 时,发回 'Hello world!'
Rack 在支持 Ruby 和 Ruby 框架的网络服务器之间提供最小接口。
接口只是假定您有一个 object 响应调用方法(如 proc)和 returns 一个数组:
- HTTP 响应代码
- headers 的哈希值
- 回复body,必须回复每个
您可以使用 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 的程序的入口点。
它所做的是 bootstrap 应用程序并将 Sinatra::Application
class 传递给具有 call
class 方法的机架。
Sinatra::Application
然后负责获取传入请求(env)并将其传递给应用程序提供的路由,然后传回响应代码 headers 和响应 body.