Heroku 上的条件服务器启动
Conditional server start on Heroku
为了避免使用 Foreman 进行开发时出现问题,我需要将 Puma 服务器包装在 Socks 代理中,以便 Quotaguard 仅在生产和生产中获得静态 IP。
对此 article that I found from this question 使用 link 我在 Procfile 的 bin/web 调用中实现了以下代码。
#!/bin/sh
if [ "$RACK_ENV" == "production" ]; then
echo Using qgsocksify to wrap Puma
bin/qgsocksify bundle exec puma -C config/puma.rb
else
echo Using straight Puma
bundle exec puma -C config/puma.rb
fi
虽然环境是在 RACK_ENV 上设置的生产环境,但未包装的 "straight Puma" 服务器启动。在本地测试这个是可行的,但在 Heroku 上却失败了。
会导致它在 Heroku 上失败的语法错误是什么?
显然 sh 在 Heroku 上不使用 == 来实现等价,但在我的 Mac 上本地工作,这就是它在开发中工作的原因。谷歌搜索显示标准 sh 使用 = 表示等价。然而,在这种情况下,我只是将 #!/bin/sh 更改为 #!/bin/bash,因为 Heroku 也支持 bash。
#!/bin/bash
if [ "$RACK_ENV" == "production" ]; then
echo Using qgsocksify to wrap Puma
bin/qgsocksify bundle exec puma -C config/puma.rb
else
echo Using straight Puma
bundle exec puma -C config/puma.rb
fi
为了避免使用 Foreman 进行开发时出现问题,我需要将 Puma 服务器包装在 Socks 代理中,以便 Quotaguard 仅在生产和生产中获得静态 IP。
对此 article that I found from this question 使用 link 我在 Procfile 的 bin/web 调用中实现了以下代码。
#!/bin/sh
if [ "$RACK_ENV" == "production" ]; then
echo Using qgsocksify to wrap Puma
bin/qgsocksify bundle exec puma -C config/puma.rb
else
echo Using straight Puma
bundle exec puma -C config/puma.rb
fi
虽然环境是在 RACK_ENV 上设置的生产环境,但未包装的 "straight Puma" 服务器启动。在本地测试这个是可行的,但在 Heroku 上却失败了。
会导致它在 Heroku 上失败的语法错误是什么?
显然 sh 在 Heroku 上不使用 == 来实现等价,但在我的 Mac 上本地工作,这就是它在开发中工作的原因。谷歌搜索显示标准 sh 使用 = 表示等价。然而,在这种情况下,我只是将 #!/bin/sh 更改为 #!/bin/bash,因为 Heroku 也支持 bash。
#!/bin/bash
if [ "$RACK_ENV" == "production" ]; then
echo Using qgsocksify to wrap Puma
bin/qgsocksify bundle exec puma -C config/puma.rb
else
echo Using straight Puma
bundle exec puma -C config/puma.rb
fi