【问题标题】:Conditional server start on HerokuHeroku 上的条件服务器启动
【发布时间】:2015-12-17 22:49:10
【问题描述】:

为了避免与 Foreman 一起开发时出现问题,我需要将 Puma 服务器包装在 Socks 代理中,以便 Quotaguard 仅在生产和生产中获取静态 IP。

使用我从this question 找到的这个article 的链接,我在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 上失败的语法错误是什么?

【问题讨论】:

  • echo "Using qgsocksify to wrap Puma" "" 这是需要的
  • 你为什么不使用if [ "$RACK_ENV" == "production" ]下一行then?

标签: ruby-on-rails heroku sh


【解决方案1】:

显然 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

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 2013-01-14
    • 2013-06-19
    • 2020-07-08
    • 2018-04-21
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多