如何将独立的Rack应用程序安装到Ruby On Rails应用程序中?

时间:2018-02-11 16:08:00

标签: ruby-on-rails ruby routes rack mount

我有一个正在运行的Rails应用程序。然后,我有一个小脚本,我想挂载到Rails应用程序 - 这里是script

require 'as2'
require 'rack'

As2.configure do |conf|
  ...
end

handler = As2::Server.new do |filename, body|
  ...
end

MyBuilder = Rack::Builder.new do
  use Rack::CommonLogger
  map '/as2' do
    run handler
  end
end

puts "As2 version: #{As2::VERSION}"

我正在研究如何将Rack应用程序安装到Rails应用程序,我应该这样做:

MyRailsApp::Application.routes.draw do
  mount MySinatraApp.new => '/api'
end

然而,我挣扎的是什么 - Rack应用程序的识别器(ID)是什么?如何设置它以及如何连接这两个应用程序并将它们成功安装在一起?

提前谢谢。

编辑:当我将文件(我在上面发布的代码段)放置到/lib文件夹 - 文件名称 as2_server.rb 时,我提出以下路线:

Rails.application.routes.draw do
  ...
  mount MyBuilder.new => '/as2'
end

我收到以下错误:

uninitialized constant MyBuilder (NameError)

我应该如何(在哪里)正确注册MyBuilder机架应用?

1 个答案:

答案 0 :(得分:0)

我认为你唯一缺少的是要求你的Rack应用程序。

总而言之,我会:

  • 将您的脚本放在lib / my_builder.rb
  • 创建config / initializers / my_builder.rb
  • require Rails.root.join('lib/my_builder')添加到新的初始化程序
  • 在config / routes.rb
  • 中安装mount MyBuilder, at: "/my_builder"