0

私は、ユーザーがブラウザーを介していくつかのrakeタスクにアクセスできるようにするいくつかの機能を備えたレガシーRails2.3.2アプリケーションを持っています。つい最近、アプリケーションはブラウザで利用可能なタスクのリスト(シェルコマンドを実行することで取得)の表示を停止しました。

私の開発マシンでは、それは完全に機能します。また、他の多くの本番サーバーでも完全に機能します。ただし、これを作成した新しい本番サーバーは機能しなくなります。

今ここにイライラする部分があります。コンソールでコードをテストすると、問題のある本番サーバーでも完全に機能します。app.getコンソールから電話をかけてテストしたこともありますが、常に機能します。これは、コンソールの開発環境と本番環境の両方でテストしました。繰り返しますが、ブラウザで失敗するだけのようです。

誰かがこのことを理解するための戦略を提案できますか?ブラウザとコンソールを介した応答が異なるのはなぜですか?

4

1 に答える 1

0

少し掘り下げましたが、これを理解したので、他の誰かが同様の問題に遭遇した場合に備えて、見つけたものを共有したいと思いました。

その答えは、本番サーバーのセットアップの2つの側面にあります。

  1. 実稼働サーバー(優れたシステム)でPhusion Passengerを使用しており、Passengerの構成の一部として、コンソールからアクセスしていたユーザーとは異なるユーザーで実行されます。通常、これは2人のユーザー(サーバーユーザーとコンソールユーザー)が実質的に同じ権限を持っているため、問題にはなりません。

  2. 本番サーバーのセットアップ中にミスが発生し、gemの1つ(私の場合はかなり重要なもの- )が間違った場所i18nにインストールされました。基本的に、それがインストールされたとき、コマンドの開始時に見落とされました。したがって、この1つのgemは、システムgemsフォルダーではなく、コンソールユーザーのホームフォルダーにインストールされました。sudo

通常、この特定の状況は、すべてのアプリケーションが正常に実行されるため、問題にはなりません。それはあなたがあなたに悲しみを与えるその宝石へのアクセスを必要とするシェルコマンドを実行しようとするときだけです。

ちなみに、レーキタスクの実行にアクセスしようとしても、ログに例外は発生しませんでした。それは私に通常の500内部サーバーエラーを与えましたが、ログには何も書き込まれませんでした(これはちょっと奇妙なことに私を襲います)

このようなものをチェックする必要がある場合、私が最終的に理解した方法は、サーバーユーザーとしてコンソールにログインしてから、シェルコマンドを実行することでした。するとすぐに、必要な宝石が見つからないというエラーが表示されました。次に、コマンドを使用してgemの場所を確認gem whichし、間違った場所にインストールされていることを確認しました。

誰かがこれを助けてくれて、私がこれを理解しようとして数日を費やしたので、時間を節約できることを願っています。

于 2012-12-03T05:39:11.613 に答える