我在 Rubymine 和 Rackup 的上下文中与 puma 作斗争。我创建了一个绑定 usig ssl 的小应用程序,并从 /config/puma.rb 或 /config/puma/production.rb 获取其参数
如果我用 puma 或 Puma -C /config/puma.rb 或 puma -E production 启动它,那效果很好
puma starting in single mode... * Version 3.12.0 (ruby 2.4.5-p335), codename: Llamas in Pajamas * Min threads: 0, max threads: 16 * Environment: development * Listening on ssl://127.0.0.1:9001?cert=./keys/s3l.cer&key=./keys/s3l.key&verify_mode=peer&ca=./keys/sso_ca.crt Use Ctrl-C to stop
不幸的是,用于 sinatra 应用程序的 RubyMine IDE 使用硬编码的 rackup 命令来启动服务器,此外还为 IP/Port 提供命令行参数,并且这个 puma 并没有真正读取它的配置文件。
在控制台中,它始终忽略配置文件:
rackup -E production Puma 从单一模式开始... * 版本 3.12.0 (ruby 2.4.5-p335),代号:Llamas in Pajamas * 最小线程:0,最大线程:16 * 环境:生产 * 监听 tcp: //0.0.0.0:9292
=> 错误的 ip、端口和没有 ssl!
- 我尝试使用和不使用环境 => 不读取 ssl 绑定
- 我试图将 config.ru 中带有 -OC=[path] 的 -C 参数转发到 puma 命令 => 不读取
- 我试图避免这一切并在 sinatra 中做到这一点,但这在“启动”中已经很晚了
那么如何通过按下触发 rackup 的播放按钮来使用 Rubymine 运行 sinatra 应用程序?我需要执行配置文件,因为定义了我的 ssl 绑定...我需要使用 rackup 因为 rubymine 强制它。我需要 rubymine 进行调试
最后,我的所有期望都是:我或 rubymine IDE 调用 rackup,它读取他的 config.ru,它调用 puma 并且 puma 正在寻找它的配置文件,依赖于 -E 但 puma 没有寻找它的文件
pumar.rb
cert= "./keys/s3l.cer"
key = "./keys/s3l.key"
ca= "./keys/sso_ca.crt"
verify_mode= "peer"
bind "ssl://127.0.0.1:9001?cert=#{cert}&key=#{key}&verify_mode=#{verify_mode}&ca=#{ca}"
配置.ru
哈希\ -s puma -O -C=./config/pumar.rb
需要“红宝石”
需要'./app'
运行应用