問題タブ [actiondispatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - レールはワイルドカードルートを特定の形式に制限します
routes.rb
ファイルにワイルドカード ルートがあります。
コントローラーで、データベース内のクライアントを検索し、カスタム ページを表示します。
これはうまく機能しますが、私の問題は、見つからないアセットもclient#show
ハンドラーを介してルーティングされていることです。
これにより、クライアントのデータベースで無意味なルックアップが行われ、500 エラーが発生します。これは、Rails が非 HTML 形式のエラー ページをレンダリングする方法を認識していないためです。
私の質問は、HTML 以外のフォーマットがワイルドカード ハンドラーに入らないようにするにはどうすればよいですか?
私は無駄に次のことを試しました:
フォーマットの制約
ルートの周りにスコープを配置して、HTML 形式に制限します。
これにより、アセットがハンドラーにルーティングされなくなりますが、残念ながら、ページが明示的に.html
拡張子で終わっている場合にのみ、ページがハンドラーにルーティングされます。失敗。
フォーマット デフォルト
次に、 format defaultを試してみようと思いました。そのようです:
残念ながら、まだ従業員はいません。変更はありません。私の理解では、Rails が content-type ヘッダーまたはファイル拡張子から他の方法で判断できない場合、これはデフォルトのフォーマットを設定するだけです。
ルート レベルでこれを行う方法はないのではないかと考え始めています。
ruby-on-rails - ActionDispatch::Routing::RouteSet#call Rails 4.1は本当に遅い
何日も検索しましたが、この質問に関連する回答が見つかりません。
Heroku でホストされている私の Rails 4.1 アプリでは、負荷が上がると、一部の PUT リクエストが非常に遅くなります。今日の最も遅いものは53秒でした。データベース (MongoDB) が遅いクエリを登録する必要はありません。通常、このリクエストには 0.3 ミリ秒かかるため、非常に高速です。ペイロードが何であれ、リクエストは遅いです。
New Relic をインストールすると、状況がさらに明らかになりますが、この問題をどこで修正すればよいかはまだわかりません。
コントローラーのコードは高速ですが、New Relic によると、遅いのは ActionDispatch::Routing::RouteSet#call です
以下は、New Relic が報告する内容のダンプです。
役立つかもしれない、またはおそらくこれと関係があるかもしれない他の情報。ルートのエイリアスがありますが、それが重要な理由がわかりません。
何が起こっているのか、それを修正するために何ができるのかについてのアイデアは大歓迎です.
更新 これはメモリ関連のようです。Performance Dynos にアップグレードすると、これらのエラーは表示されなくなりました。しかし、これは Heroku での設定が非常に悪いようです。
ruby-on-rails - Rails ログからネストされたパラメータをフィルタリングする方法
ここでRails ログからキーをフィルター処理できることがわかりましたが、パラメーター ハッシュ内にネストされたキーをフィルター処理する方法は完全には明らかではありません。
私のparamsハッシュは次のようになります:
はbase64params[:download][:data]
文字列です。これは大量のデータであり、ログから削除したいと考えています。
これは可能ですか?
Rails 4.0.4 を使用しています
ruby-on-rails - 一部の RSpec rails リクエスト例では HTTP ステータス コードをテストしますが、他の例では発生した例外についてテストします
でテストされた Rails 4.2.0 アプリケーションでrspec-rails
は、JSON Web API に REST に似たリソースを必須属性で提供しますmand_attr
。
BAD REQUEST
この属性が POST リクエストにない場合、この API が HTTP コード 400 ( ) で応答することをテストしたいと思います。ActionController::ParameterMissing
(以下の 2 番目の例を参照してください。) 私のコントローラーは、以下の最初の RSpec の例に示されているように、 をスローすることによって、この HTTP コードを引き起こそうとします。
他のRSpec の例では、発生した例外を例によってレスキューする (予想される場合) か、テスト ランナーをヒットして、開発者に表示されるようにする (エラーが予期しない場合) ことを望んでいます。削除する
からconfig/environments/test.rb
。
私の計画は、 request specに次のようなものを含めることでした:
回答として投稿する2つの機能するソリューションと1つの部分的に機能するソリューションを見つけました。しかし、私はそれらのどれにも特に満足しているわけではないので、より良い (またはまったく異なる) 何かを思いつくことができれば、あなたのアプローチを見てみたいです! また、リクエスト スペックがこれをテストするのに不適切なタイプのスペックである場合は、そのことを知りたいです。
私はその質問を予見します
Rails アプリケーションだけでなく、Rails フレームワークをテストするのはなぜですか? Rails フレームワークには独自のテストがあります。
ここでフレームワーク自体をテストしているのではなく、フレームワークを正しく使用しているかどうかをテストしていると思います。ActionController::Base
私のコントローラーはから継承していませんが、デフォルトで使用するかどうか、または最初にコントローラーに何らかの方法でそうするように指示する必要があるかどうかはActionController::API
わかりませんでした。ActionController::API
ActionDispatch::ExceptionWrapper
ruby-on-rails - ActionDispatch::Rails 本番環境での静的
ActionDispatch::Static
public 以外のディレクトリで静的ファイルを提供するために使用したいと考えています。開発では完全に機能しますが、本番環境では同じ結果が得られないようです。
に静的ファイルがあります/var/www/mysite.com-static
。イニシャライザに、次のものを追加しました。
の出力rake middleware
は次のとおりです。
/var/www/myapp.com-static 内でリクエストするすべてのページで 404 が発生するのはなぜですか?
ruby-on-rails - ActionDispatch::Routing::Mapper の未定義メソッド「propfind」
Railsアプリに実装しようとしてgit push
いますが、Railsが検証していないように見えるPROPFINDリクエストを送信します。私がしようとすると:
git プッシュhttp://localhost:3000/satellite/.git
それは私に与えます:
2015-06-08 19:20:38 +0530 で 127.0.0.1 の PROPFIND "/satellite/.git/" を開始しました
ActionController::RoutingError ([PROPFIND] "/satellite/.git" に一致するルートはありません)
ただし、問題なくgit clone http://localhost:3000/satellite/.git
動作します。(つまり、レポがそこに存在します。)
route.rb ファイルに propfind を追加しようとすると、次のようになります。
ActionDispatch::Routing::Mapper の未定義メソッド「propfind」
私はこれを見つけました: https://rails.lighthouseapp.com/projects/8994/tickets/5895-allow-mounting-of-rack-apps-that-deal-with-http-extensions
そのパッチの後、彼らは ActionDispatch で PROPFIND を許可したと思います。ドキュメントでは、propfind を RFC3253 定数として言及しています。PROPFIND を有効にする方法はありますか?
ruby-on-rails - ActionDispatch::Cookie::CookieOverflowからレスキューする方法は?
まず第一に、私は読んだ:
そして、これは私が直面している問題ではありません。
私は一緒に働いています:
と
検索を処理しようとしていますが、検索が大きすぎると、次のエラーが発生します。
ApplicationControllerでこのエラーをrescue_formしたいのですが、うまくいかないようです:
どこ:
どんな助けも大歓迎です。
ruby-on-rails - ネストされたリソースで名前付きルート パラメータをオーバーライドする
:id
パラメータをオーバーライドしたいのですが、これはその方法を説明しています。ただし、ネストされたリソースでは実際には機能しません。私のルートは次のようになります。
これにより、次の形式の URL が生成されます: :user_user_id/:project_id
. 私はむしろそれをしたいと思い:user_id/:project_id
ます。誰か助けてくれませんか?