【问题标题】:How to run Rails/Capybara with Puma server in SSL mode?如何在 SSL 模式下使用 Puma 服务器运行 Rails/Capybara?
【发布时间】:2023-03-30 09:55:01
【问题描述】:

我正在尝试让 capybara 通过 ssl 运行测试 puma 服务器。需要帮助配置它,请:

Capybara.register_server :ssl_puma do |app, port, host|
  require 'rack/handler/puma'
  Rack::Handler::Puma.run(app, Host: host, Port: port, Threads: "0:1") do |server| 
    ctx = Puma::MiniSSL::Context.new
    ctx.key = ENV['SSL_KEY_PATH']
    ctx.cert = ENV['SSL_CERT_PATH']
    ctx.verify_mode = Puma::MiniSSL::VERIFY_NONE

    server.add_ssl_listener host, port, ctx # this line is wrong, but that's the gyst of what needs to happen
  end
end

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ssl capybara puma


    【解决方案1】:

    如果您使用的是最新版本的 Capybara,我相信您应该能够执行类似的操作

    Capybara.server = :puma, { Host: "ssl://#{Capybara.server_host}?key=#{ENV['SSL_KEY_PATH']}&cert=#{ENV['SSL_CERT_PATH']" }
    

    【讨论】:

    • 没用,它启动 puma 并挂起(水豚 v3.0.3):Capybara starting Puma...* Version 3.11.4 , codename: Love Song* Min threads: 0, max threads: 4* Listening on ssl://127.0.0.1:49691?key=/usr/local/ssl/localhost.key&cert=/usr/local/ssl/localhost.crt
    • @Arman 从输出中您可以看到它正在启动 puma 并启用 SSL - 它最终是否会引发错误(可能在 1 分钟后)?
    • @Arman 玩弄这个——它确实会在 SSL 模式下启动 Puma,但 Capybaras 检查服务器是否启动只检查 http,所以它不会工作。目前完成这项工作的唯一方法是让 Capybara 在没有 SSL 的情况下启动您的应用程序,设置一个单独的 SSL 隧道来指向正在测试的应用程序,然后设置 Capybara.app_host 以使连接默认到隧道端点,或者运行使用 SSL 单独应用程序并告诉 Capybara 不要运行它(并再次设置app_host)。第二个选项失去了 Capybara 监控打开请求的能力。
    • @Arman 你可以试试 Capybara 的 ssl_support 分支 - github.com/teamcapybara/capybara/tree/ssl_support - 看看它是否适合你。如果您尝试了它并且它对您有效/无效,请在 PR 中留下反馈 - github.com/teamcapybara/capybara/pull/2028
    • 谢谢。试过了,没用,在PR中留言。
    猜你喜欢
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多