我想从我的 gem 代码中启动服务器,就像 Rails 启动 Unicorn、Puma、Webrick 或任何“rails 服务器”一样。我想要一个像“mygem server”这样的二进制文件,它会启动Passenger。
我尝试使用反引号,但如果可能的话,我想避免产生另一个进程。(另外,当我这样做时,我丢失了乘客的标准输出。)
命令行是启动Passenger的唯一方法吗?
Passanger 是一个 C++“宝石”,它实际上运行与根服务器进程分离的 Ruby 层。
开发人员认为这种方法可以保护服务器免受 Ruby 相关问题的影响(我认为这不是必需的,但它绝对很有趣)。
这为您提供了几个选择:
您可以使用Kernel.exec
which用您提供的命令行替换当前进程。
您可以使用其他服务器,例如Puma、Iodine、Agoo或任何您喜欢的服务器。
每个服务器都有其优点和缺点,因此请进行测试和挑选。
我从经验中知道,您可以从代码块中开始所有这些(或者我记得)。