Passenger およびルーティング ヘルパー メソッドに関連するため、Rails 3 アプリで見られるルーティング動作を理解するのに本当に苦労しています。簡単な概要は次のとおりです。
ユーザーが私のサイトに登録するとき、私がやりたいことの 1 つは、ユーザーが有効な電子メール アドレスを送信したことを確認するために確認電子メールを送信することです。そこで、ある種のマジック トークンを含む URL をユーザーに送信するようにメーラーを設定し、送信したメールをユーザーが受信したことを証明しました。電子メールの本文の URL は、ルーティング ヘルパー メソッド (この場合はverify_url("a1b2c3")
) を介して生成され、URL は次のように適切に電子メールに詰め込まれます。
http://localhost:3000/verify/a1b2c3
これはすべて、localhost:3000
問題なくうまく機能します。そのため、責任ある開発者として、次に行うことは、アプリをリモート QA 環境に移動し、すべてが引き続き機能することを確認することです。私のホスティング プロバイダーは Passenger を使用しており、次のように QA 環境にアクセスできるようにセットアップしています。
http://my.url/qa
/qa
これを行うには、適切なファイルでRailsBaseURI を に設定し.htaccess
ます。そのため、QA 環境でサイトに登録しようとしています。ヘルパー メソッドverify_url
が次の URL を生成することを期待しています。
http://my.url/qa/verify/a1b2c3
しかし、これは私が代わりに得るものです:
http://my.url/verify/a1b2c3
「qa」パスへの参照が明確に欠けていることに注意してください。答えを探してさまざまなブログやマニュアルを調べたところ、次の提案がありました。
- などの環境変数を設定します。
ENV['RAILS_RELATIVE_URL_ROOT']
ActionController::Base.relative_url_root
私の中で設定environment/qa.rb
- my にマップを追加して
config.ru
、特定のパスでアプリを初期化します - ルートをスコープにラップする
ただし、これらはそれぞれ非推奨 (最初の 2 つのオプション) であるか、次のように冗長なパス情報 (2 番目の 2 つのオプション) を生成することになるようです。
http://my.url/qa/qa/verify/a1b2c3
verify_url("a1b2c3")
を呼び出すときに、QA 環境の相対パスを含む適切な URL を実際に取得するように、これを設定する適切な方法を誰か教えてもらえますか? environments/qa.rb
理想的には、ある環境から次の環境に移動するときにアプリをまったく変更する必要がないように、これを何らかの方法で設定できるようにしたいと考えています。
前もって感謝します!