制作机架 CLI
Making a Rack CLI
我正在尝试制作一个类似于 Rails 的框架,但纯粹专注于 GraphQL。 Rails 的一个不错的特性是它为 Rack 提供了一个 CLI 界面和一个 config.ru。因此,您可以调用 rackup
,也可以调用 bin/rails server
,Rails 应用程序将 运行。我通过将 Rack 应用程序放入一个单独的文件 (config/application.rb
) 来模拟此功能,我在 config.ru
和 CLI 中导入该文件,然后实例化并 运行.
但是,我对 Rack 中间件有疑问。由于当您 运行 use MyMiddleware
使用实例化的 Rack 应用程序时,Rack 中间件似乎神奇地工作,我不太确定如何在 config.ru 和我的 CLI 中做到这一点。现在看来我需要在单独的位置实例化应用程序,添加中间件,然后将其交给 config.ru 或 CLI。我可以这样做,但感觉必须有一种方法以更简洁的方式附加中间件。例如,我可以以某种方式要求 config.ru 然后 运行 它吗?或者我可以在实例化应用程序之前附加中间件吗?
config.ru
只是一个 ruby 文件,它由 Rails 作为 运行 每个命令的一部分加载。如果您愿意,可以像往常一样自己要求它。
如果您想真正了解 Rails 是如何做到的,配置加载隐藏在 Rails CLI 的这一部分:
https://github.com/rails/rails/blob/3cac5fe94f0f81b4263cfa03d4822c05a55eb49c/railties/lib/rails/application.rb
我正在尝试制作一个类似于 Rails 的框架,但纯粹专注于 GraphQL。 Rails 的一个不错的特性是它为 Rack 提供了一个 CLI 界面和一个 config.ru。因此,您可以调用 rackup
,也可以调用 bin/rails server
,Rails 应用程序将 运行。我通过将 Rack 应用程序放入一个单独的文件 (config/application.rb
) 来模拟此功能,我在 config.ru
和 CLI 中导入该文件,然后实例化并 运行.
但是,我对 Rack 中间件有疑问。由于当您 运行 use MyMiddleware
使用实例化的 Rack 应用程序时,Rack 中间件似乎神奇地工作,我不太确定如何在 config.ru 和我的 CLI 中做到这一点。现在看来我需要在单独的位置实例化应用程序,添加中间件,然后将其交给 config.ru 或 CLI。我可以这样做,但感觉必须有一种方法以更简洁的方式附加中间件。例如,我可以以某种方式要求 config.ru 然后 运行 它吗?或者我可以在实例化应用程序之前附加中间件吗?
config.ru
只是一个 ruby 文件,它由 Rails 作为 运行 每个命令的一部分加载。如果您愿意,可以像往常一样自己要求它。
如果您想真正了解 Rails 是如何做到的,配置加载隐藏在 Rails CLI 的这一部分: https://github.com/rails/rails/blob/3cac5fe94f0f81b4263cfa03d4822c05a55eb49c/railties/lib/rails/application.rb