問題タブ [rack]

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.

0 投票する
1 に答える
105 参照

ruby-on-rails - Rails 2.3 のラックサポートの影響は?

Rack を使用して Web サーバーとやり取りするようになったので、Rails アプリの開発に関して何か違いはありますか? それを利用するために何か違うことをするべきですか?それは単にきれいですか、それとも cgi 実装よりもパフォーマンスが向上していますか?

0 投票する
2 に答える
743 参照

ruby-on-rails - Cucumber ステップで Rack から返された応答を取得するにはどうすればよいですか?

Rails アプリケーション用の Cucumber ステップがあります。

しかし、その@responseオブジェクトは my によって返されたControllerものであり、ステータスを期待どおりに設定するのは Rack ミドルウェアです。コントローラーから返されたものではなく、最も外側のミドルウェアから返された応答を取得するにはどうすればよいですか?

0 投票する
1 に答える
843 参照

ruby-on-rails - Rack-jsonp は単純なリクエストでは機能しませんが、Rails 2.3 の .js 呼び出しでは機能します

私は Rails 2.3 を使用しており、JSONP のサポートを提供することにしました。まったく新しいアプリケーションを作成しました。次に、スクリプトを実行/足場を生成 ユーザー名:文字列

これは私の環境全体です.rb

localhost:3000/users にアクセスすると、得られるのはハッシュだけです。localhost:3000/users.js?callback=show にアクセスすると、良い結果が得られます。

jsonp コードを見てみましょう。応答が配列にラップされている理由がわかりません。

このステートメントを置き換える別のRackミドルウェアを作成しました

この声明で

そして今、すべてがうまくいっています。

これが Rack-contrib のバグだとは信じられません。

応答が配列にラップされている理由と、アプリケーションで Rack-contrib を使用する方法を誰かが教えてくれますか?

私のアプリケーションの完全なソース コードはこちらです。クローンして localhost:3000 で実行するだけです。

0 投票する
2 に答える
476 参照

ruby-on-rails - Ruby On Rails 自体は Rack アプリですか?

だから私はラックのドキュメントから推測しましたが、間違っているかもしれません...

0 投票する
1 に答える
1755 参照

ruby - 電子メール検証によるユーザーサインアップ、およびRubyでの認証

私はSinatraでWebアプリを作成しようとしていますが、認証だけでなく、おそらくラックミドルウェアとしてのユーザーサインアップに電子メール検証を使用するための優れたソリューションがあるかどうか疑問に思いました。OpenIDのサポートもあればいいのですが。

私は自分で転がることができると思いますが、車輪の再発明をしたくありませんでした。私がそうしなければならない場合、誰かが私が使用したいと思うかもしれないライブラリ、多分サンプルコードさえも私に指摘することができますか?また、これまでにこれを行ったことがないので、サインアップ/認証で重要な何かを実装するのを忘れてしまうかもしれないのではないかと心配しています。

自家製のソリューションが必要な場合は、パスワード暗号化用のbcrypt-rubyと、電子メール用のSinatra::MailerまたはPonyを見つけました。OpenIDサポートを使用してサインオンする場合、 hancockhancock-clientがありますが、使用法については完全には明確ではなく、実際にはシングルサインオンサポートは必要ありません。たぶん私はrubyopenidライブラリを使うべきですか?他に何か必要ですか?

これはかなり混乱した質問ですが、より経験豊富な誰かが私を正しい方向に向けてくれることを願っています。

0 投票する
1 に答える
996 参照

ruby-on-rails - Ruby 1.9でファイルを(ペーパークリップを使用して)アップロードしようとすると、RailsでRackが失敗します

Ruby1.9とRails2.3.4を使用しているRubyonRailsアプリケーションがあり、ユーザーにビデオをアップロードしてもらいたいので、Paperclip gemをインストールしましたが、Rackからこのエラーが発生します。それが「無効なバイトシーケンス」であると言っているという事実は、それがRuby1.9からのものであると私に疑わせます。

何か案は?

ありがとう、

タム

フォーム:

e>

0 投票する
1 に答える
1109 参照

sinatra - Passengerを使用してSinatraアプリのVirtualHostを構成するにはどうすればよいですか?

PassengerでRailsアプリを実行しましたが、すべて正常に動作します。

PassengerでRackアプリケーションとして実行するSinatraアプリを追加したいのですが、ルーティングエラーが発生します。

私のVirtualHostsファイルは次のようになります。

私のSinatraアプリは本当にシンプルです。get "/do_something" do ....パブリックファイルなしで呼び出されたルートがあります。一部のJSONでのみ応答します。

どうすれば次のようなリクエストを実行できますかwww.sub.domain2.com/do_something

0 投票する
4 に答える
1103 参照

ruby-on-rails - 大きな本文を投稿するとスタックがクラッシュしますが、本番モードのみですか?

私たちの Rails アプリケーションには、サーバーにデプロイする 2 つの環境 (ステージング環境とデフォルトの本番環境) があります。

staging.rb ファイルは、config/environments フォルダーから production.rb のコピーです。2 つの違いは、whiny nil が true に設定されていることです。

Rails アプリケーションは主にその API に使用されるため、開発者が使用できるように社内のステージング サーバーの 1 つで実行しました。これは、ほぼ4か月間問題なく機能しました。実稼働サーバーに転送するときが来ると、POST または PUT が大きな (場合によっては非常に大きな) 本体で受信されるたびに、スタックが一貫してクラッシュし始めました。2 つのサーバー間でテストすると、同じ要求がステージング サーバーによって完全に処理されました。

クラッシュ/ハングの最も苛立たしい部分は、クラッシュが発生したスタック (nginx、Phusion Passenger、Ruby 1.9 パッチ レベル 243、Rails 2.3.4) のどこにログがないか、追跡できないことでした。nginx エラー ログ、Rails ログ、または見つけた場所には何も表示されませんでした。nginx、パッセンジャー、Ruby の更新されたバージョン (ステージングよりも高いパッチ レベルですが、まだ 1.9) を使用して運用サーバーを実行していたので、実行可能ファイルとサポートのすべてを転送するところまで行って、一度に各コンポーネントを 1 つずつ元に戻し始めました。ファイル (基本的には /usr/local にインストールしたものすべて) を本番マシンに転送しても無駄です。マシンをワイプしてすべてのステップを再試行しようとしたちょうどその時、誰かが本番マシンを「ステージング」環境に切り替えることを提案しました。. . 魔法のように、問題は解決しました!

何がエラーを引き起こしたのかを知りたくて、Rails コア、独自のコード、およびすべてのプラグインをくまなく調べて、本番環境でこのような大規模なハング/クラッシュを引き起こす可能性があるものについての手がかりを探し始めました。再び役に立たない。

私が見つけた唯一の手がかりは、行動でした。アプリ(レールアプリが実際に提供するページの1つ)を「オン」でテストすると、リクエストを送信してアプリをクラッシュさせ、頻繁に更新(通常は3〜4回)した後、 Nginx のログに記録され、最終的にアプリはリクエストの処理を再開します。エラーは次のとおりです。

通常、文字コードのエラーが発生した場合、最初に ruby​​ 1.9 に取り掛かります。. . ただし、私のテストからわかるように、両方のマシンで同じバージョンでした!

結局のところ、私は疑問に思っているのでしょう。. . 何が起こっているのか誰にも考えがありますか?当分の間、アプリをステージングで実行できることは明らかですが、対処しなければならないさらに深い問題が見つかったのではないかと心配しています。これが起こっている場所を探すべき次の場所についてのアイデアはありますか?

セットアップ: Mac OS X Server: 10.6.1、
Rails 2.3.4、
Ruby 1.9p243、
Nginx 0.8.17、
Passenger 2.2.5

必要な Gem :
environment.rb
デーモン
rmagick
test.rb
rspec
rspec-rails
factory-girl
rack-test

インストールされているプラ​​グイン:
act-as-dag (有向非巡回グラフを作成するためのアクティブ レコード プラグイン)
daemon_generator
globalize2
no-peeping-toms (テスト用) think
-sphinx


更新 (khell への応答):

config.whiny_nils = true を実稼働環境に追加しようとしましたが、それでもクラッシュが発生します。

また、ステージング サーバーに戻り、環境を "Production" に設定しました。. .同じクラッシュ!

「大きな」リクエストボディの意味を明確にしました。アプリケーションを一貫してクラッシュさせる POST/PUT の 1 つは、約 20,000 文字 (json) でした。API は小さな PUTS/POSTS で 1 日中一貫して使用され、稼働したままですが、これらの大きなリクエストが行われたときにのみクラッシュ/ハングしたため、2 つが接続されていると想定しました。

Rack/Ruby 1.9に関する限り。Rack と 1.9 に関する情報が大量にあるため、Rack gem を git リポジトリの最新のものにアップグレードしました (これにより、1.9 の問題の一部が修正されたと思われます)。rewindable_input、ruby 1.9 などに関するかなりの困難について読んだことがありますが、他の 1.9 アプリで経験した rewindable_input エラーが発生しなかったため、これは別の問題であると想定しました。また、Rails 環境を変更して問題が解決したときに Rack を除外しました (Rack のソース コードを検索したところ、エラーの原因となる環境固有のメソッドはないようでした)。

お役に立てれば!


pauliephonic に応答して UPDATE

rails のログにメッセージがまったく記録されていません (これにより、Web スタックで問題をしばらく検索するようになりました)。クラッシュ/ハングが発生しているという私の手がかりは、一度大きなリクエストが行われると、アプリケーションはリクエストごとに 500 エラーしか返さないことですが、これらの 500 エラーは Rails ログには表示されません。

データベース構成は同じです(mysqlクラスターを使用していたため、文字通り同一でしたが、現在はローカルのmysqlデータベースを使用していますが、使用するデータベースに関係なくエラーが発生することを確認しています)

複数のバイト/ユニコードに関する限り。. . 私たちは国際化されたアプリで作業しています。. . しかし、レールが本番環境とその他の間でユニコードの変更を処理する方法は正しくないと思いますか? 上で述べたように、これはPOSTまたはで発生しましたPUT。デバッグ中にテストする方法は、大規模で大きくネストされたモデルの 1 つの同じ編集ページに移動し、それを「保存」しようとすることでした。これにより、本番環境ではアプリがクラッシュしますが、ステージングではアプリがクラッシュしません。同じ文字、同じコンテンツ、同じボタン、同じ動作をテストするたびに. . . 環境によって異なる反応。コショウさえできなかったputs私のコードのいたるところにステートメントがありました。これは、リクエストが Rails アプリケーションに到達していないように見えたためです。RailsログまたはNginxエラーログにエラーメッセージが表示されませんでした(複数の更新で投稿したものを保存してください)。