【问题标题】:Sinatra application running on Dreamhost suddenly not working在 Dreamhost 上运行的 Sinatra 应用程序突然无法正常工作
【发布时间】:2010-12-27 03:50:13
【问题描述】:

直到几天前,我的 Sinatra 应用程序在 Dreamhost 上运行良好(我不确定它究竟是什么时候坏的)。现在,当我访问我的应用程序时,出现此错误:

can't activate rack (~> 1.1, runtime) for ["sinatra-1.1.2"], already activated rack-1.2.1 for []

我不知道如何解决这个问题。我尝试更新我所有的 gem,然后触摸 app/tmp/restart.txt 文件,但仍然没有修复。

我没有接触过我的应用程序的任何文件,也没有接触过我的 Dreamhost 帐户。它只是自己破坏了(我猜是 DH 在他们的服务器上更改了一些导致破坏的东西)。

当我最初部署我的应用程序时,我不得不经历一些困难才能让它工作,我似乎认为我在自定义位置使用 gems,但我不记得确切的位置或方式。我不太了解 Rack/Passenger。

这是我的 config.ru:(主要是从网络上移植过来的,我不完全理解)

ENV['RACK_ENV'] = 'development' if ENV['RACK_ENV'].empty? 
#### Make sure my own gem path is included first 

ENV['GEM_HOME'] = "#{ENV['HOME']}/.gems"  
ENV['GEM_PATH'] = "#{ENV['HOME']}/.gems:" 
require 'rubygems'
Gem.clear_paths  ## NB! key part 
require 'sinatra'



set :env,  :production
disable :run

require 'MY_APP_NAME.rb'

run Sinatra::Application

【问题讨论】:

  • 抱歉,您有什么问题?

标签: ruby sinatra passenger rack


【解决方案1】:

您可以在需要之前尝试“固定”您的 gem 版本。如果您对服务器有命令行访问权限,请尝试以下操作:

gem list

这应该会告诉您安装了哪些 gem。但是您确实说您有一些自定义 gem 路径可能不适用于此。有些东西正在调用与您的应用程序所期望的版本不同的“需要”机架“。可能是Passenger,这意味着您最好的希望是升级到最新版本的Sinatra。

在 Gem.clear_paths 之后,你可以试试这个:

gem 'rack', '~>1.1'
gem 'sinatra', '~>1.0' # NB use whatever gem list shows you as the version of sinatra you were using when you deployed your application.

【讨论】:

    【解决方案2】:

    这是典型的 gem 激活问题。使用 Bundler 绕过它。

    【讨论】:

      【解决方案3】:

      看起来您遇到了不受支持的 Sinatra、Rack、Tilt 版本。

      看看这里如何解决这个问题:http://codex.heroku.com/past/2010/12/14/sinatra_on_dreamhost/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多