2015-01-05 14 views
40

複数のhas_manyオブジェクトを持つモデルを編集しようとすると、Rails 4.2にアップグレードされ、ローカルホストとプロダクションで内部サーバエラーが発生する。これは、要求がさらにコントローラすなわちに、私はレールのコンソールに通常の次の行が表示されないされません。私は、レールのコンソールに表示メッセージRails 4.2:コンテンツ内のファイルのマルチパート数が最大の内部サーバエラー

!! Unexpected error while processing request: Too many open files - Maximum file multiparts in content reached 

Started GET "/feeds/3/edit" for 127.0.0.1 at 2015-01-04 20:07:19 -0800 
Processing by FeedsController#edit as HTML 
...... 
...... 

任意の手掛かりであります?? Ruby 2.1.5を使って2.2にアップグレードしました。

+1

ここに同じことを取得、4.2.0とRuby 2.2.0 Railsの。 –

+1

Rack 1.6.4にはこれに関する修正が含まれています。 –

答えて

66

Rails 4.2バージョンのラック(https://github.com/rack/rack/commit/b0b5fb9467e6ed777d3eaf35afc81d758e308aab)にマルチパート制限が追加されたようです。デフォルトは128です。これはあなたの目的にはあまりにも小さいかもしれませんが、それは私のためのものでした。初期化子で値を0に設定すると、制限を削除し、問題が修正されています。

Rack::Utils.multipart_part_limit = 0 

サーバーは、ファイルハンドルが不足しないように、それはあなたのニーズにフィットするまで、私は値を調整することをお勧め。私のアプリは大規模なフォームを使用し、それを512に設定することは私にとってはうまくいくようでした。

+2

ありがとう、クレイグ。あなたの答えがうまくいけば、それをテストし、マークする。私は長い形をしている。短いフォームはうまく動作します。 – anu

+3

導入されたパッチは、ファイルだけでなく、フォーム要素ごとに1つのオープンファイルを数えているようです。したがって、ネストされたフォームを使用すると、すぐに「ファイル」が使い果たされます。悪いパッチのようだ。 – Rob

+0

Rack 1.6.1にはこの修正が含まれていません。これは1.7リリースになるようです:( –

14

ここに表示されているように、環境変数をアプリに渡すこともできます(https://github.com/rack/rack/blob/8d21788798b521b97beb10047ebf593ddc0aaed2/lib/rack/utils.rb#L75)。

RACK_MULTIPART_PART_LIMIT=0 rails server

+1

'RACK_MULTIPART_LIMIT'はラック1.6.0で動作します – choonkeat

+3

しかし、コードの発言_RACK_MULTIPART_LIMITが間違って導入されたため、RACK_MULTIPART_PART_LIMITとRACK_MULTIPART_LIMITの両方を設定する必要があります。これは1.7.0_ – anka

+0

で削除されます?、私はこの行を配置することができ –

6

すべてのHTML入力要素がマルチパート形式のオープンファイルとしてカウントされていますラック1.6にバグがあるように見えます。他の人が指摘しているように、制限を0に変更して機能を無効にするか、制限をバンプすることができます。

https://github.com/rack/rack/pull/814

+0

これは1.6.4にマージされています –

関連する問題