【问题标题】:Sinatra on Passenger always fails on first attempt乘客上的 Sinatra 总是在第一次尝试时失败
【发布时间】:2011-01-08 04:17:57
【问题描述】:

我有一个小型 Sinatra 应用程序,我在使用 Passenger 的共享主机帐户上运行。但是,一段时间后第一次访问该应用程序时,我收到一个乘客错误页面,提示该应用程序无法启动。通常是因为找不到 Sinatra。

我假设这只是产生新实例时的正常延迟。但是,有没有办法延迟尝试加载 Siantra 直到它的乘客完全加载?

【问题讨论】:

    标签: sinatra passenger rack


    【解决方案1】:

    很久以前我有a similar problem。更新到较新的 Sinatra gem 对我有帮助 - 您正在运行什么版本?

    【讨论】:

      【解决方案2】:

      我认为您可能需要添加 Gem.clear_paths!在里面

      【讨论】:

        【解决方案3】:

        我最近接受了 Dreamhost 支持(不是很好的体验),最终他们建议将 gem 冻结到应用程序中。这充其量只是一个部分解决方案,因为它似乎适用于某些宝石而不适用于其他宝石。

        代替

        require 'sinatra'
        

        我有:

        require 'vendor/gems/sinatra-0.9.4/lib/sinatra'
        

        冻结宝石在其他地方有所介绍,但简要说明:为此做好准备,需要做

        mkdir vendor/gems
        cd vendor/gems
        gem unpack sinatra
        

        由于此更改,我从未收到启动失败屏幕,将 sinatra 引用为无法加载的文件。但是,对于一些需要自身或其他宝石的一部分的其他宝石,我仍然可以使用它。不太清楚细节,但我正在研究破解已安装的 gem 以使每个“要求”直接使用我的“供应商”库中的路径。

        【讨论】:

          【解决方案4】:

          我似乎通过在 .htaccess 文件中设置 GEMS_PATH 环境变量解决了这个问题。我没有再次遇到错误。还!

          【讨论】:

          • 没有。站点 5。老实说,这种方法也没有奏效。到目前为止,我发现的唯一解决方案是设置一个 cron 作业以每 5 分钟访问一次该站点,以保持乘客实例处于活动状态。有点破解,但它似乎工作。
          猜你喜欢
          • 2019-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-27
          • 1970-01-01
          相关资源
          最近更新 更多