5

ActiveAdminでこの問題が発生しました。時々、未定義の変数があるページにアクセスすると、サーバーは一種の「無限ループ」を開始し、エラーメッセージを表示せず、強制終了するまでCPUとメモリの使用量を増やします。

次に例を示します。

Answersテーブルを取得しました。これは、answers.rbのコードの一部です。

show :title => proc { answer.id } do
  panel 'Answer' do
    .
    .
  end
  .
  .
end

このコードは機能せず、「未定義のローカル変数またはメソッド`answer'」というエラーが表示されます。

私は書かなければなりません

show :title => proc { @answer.id } do

これを解決するために。

しかし、Usersテーブルを取得しました。これは、users.rbのコードの一部です。

show :title => proc{ @user.name } do
  panel 'User details' do
    .
    .
  end
  .
  .
end

私が書いたら

show :title => proc{ user.name } do

上記の問題が発生しましたが、エラーメッセージは表示されず、CPUとメモリの使用量が増加します。

これらの2つのコード間で動作が異なる理由を知りたくありません。そのような場合にエラーが発生せず、CPU/メモリが増加する代わりにエラーメッセージを表示する方法を知りたいです。

どうもありがとう

4

3 に答える 3

0

コメントに基づいて、ページネーションの問題のように聞こえます。試す:

class User < ActiveRecord::Base
  paginates_per 25
end

そして、それが役立つかどうかを確認してください。AA 0.4.0 で指摘された問題がありました: https://github.com/gregbell/active_admin/issues/996

于 2013-02-14T14:43:37.820 に答える
0

私もこれに遭遇しました。例外が発生したときにスコープ内の変数の値をダンプする better_errors またはその他のツールを使用している場合、ActiveRelation オブジェクトが実行されてダンプされる可能性があることを指摘する必要があります。私の場合、実際には ActiveRelation のみを含む変数の値をダンプするためにフェッチされるテーブル内の数百万行。

私は Pow を使用していますが、これが発生すると、マシンがメモリ不足になり使用できなくなるまで ruby​​ プロセスが実行され続けました。ruby プロセスを強制終了することが回復する唯一の方法でした。

これをトラブルシューティングするにはrails server、昔ながらの方法で実行し、出力を直接調べる必要がありました。これにより、ルビーをすぐに殺すことができました。調べることもできたでしょうlog/development.log

于 2013-07-02T18:09:48.970 に答える