2010-12-27 13 views
1

数日前まで私のSinatraアプリケーションは正常に動作していました(間違っていた時期は正確ではありません)。今度私のアプリケーションにアクセスすると、このエラーが表示されます。Dreamhost上で実行されているSinatraアプリケーションが突然動作しない

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

これを修正する方法はありません。私はapp/tmp/restart.txtファイルに触れて、すべての宝石を更新しようとしましたが、修正はまだありません。

私のアプリのファイルやDreamhostアカウントには触れていませんでした。それはちょうどそれ自身で破った(私の推測は、バストを引き起こしたサーバ上の何かをDHが変更したことである)。

私のアプリを最初にデプロイしたとき、それを動作させるためにいくつかのフープを実行しなければなりませんでした。私はカスタムの場所で宝石を使っていたと思っていますが、私は、ラック/パッセンジャーの周りの道をとてもうまく知らない。ここで

は私の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 
+0

申し訳ありませんが、あなたの質問は何ですか? – Phrogz

答えて

0

宝石のバージョンを必要とする前に 'ピン止め'することができます。サーバへのコマンドラインアクセスがある場合は、次のように試してください:

gem list 

インストールされている宝石が表示されます。しかし、あなたはこれのためにはうまくいかないかもしれないカスタムの宝石のパスがあると言います。アプリケーションが期待しているものとは異なるバージョンの「必須」ラックを呼び出すものがあります。それは乗客かもしれません。あなたが望むことができるのは、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. 
0

それは典型的な宝石の活性化の問題です。それを回避するにはBundlerを使用します。

関連する問題