問題タブ [mod-rails]
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 - シンボリック リンクなしで複数の Rails アプリを 1 つのドメインにデプロイする方法
パッセンジャーのドキュメントによると、中央の Rails アプリを設定することで 1 つのドメインに複数の Rails アプリを展開し、このアプリのパブリック ディレクトリにシンボリック リンクを作成して他のアプリにリンクすることができます (そしてそれについて Web サーバーに伝えます)。
これは実際にはかなり面倒です。ウェブサーバーの設定だけでこの動作を実現する方法はありますか? mod_rails で apache2 を使用しています。
私が欲しいのは次のとおりです。
myapp.subdomain.domain.tld myapp.subdomain.domain.tld/staging myapp.subdomain.domain.tld/development
各 URL は、サーバー上の次のディレクトリに存在する異なる Rails プロジェクトを指しています。
/var/www/myapp/production/current/public /var/www/myapp/staging/current/public /var/www/myapp/development/current/public
このシナリオでは、本番フォルダーのパブリック フォルダーにシンボリック リンクを配置する必要がありますが、これは私が望むものではありません (非常に汚いと感じます)。これらのプロジェクトは、後で別のサーバーに配置される可能性さえあります。
ruby-on-rails - Ruby on Rails と標準の mod_rewrite
私は PHP で書かれた古いアプリケーションを持っていますが、今はそれを新しい RoR アプリに置き換えています。古いアプリケーションには、「this-is-seo-title,n123.html」のようなリンクがあります。htaccess には、これらのリンクを news.php?id=123 に変換するルールがあります。
RoR アプリをセットアップすると、リンクは「RoR 方式」(:controller/:action/:id) になります。クールでいいのですが、Google には約 50,000 のインデックス付きサブページがあります。このインデックス付きのサブページを壊したくないので、ここに質問があります:
「this-is-seo-title,n123.html」リンクを /news/123 に変換する htaccess ファイル内に新しいルールを作成できますか?
まだアプリをデプロイしておらず、パッセンジャー モジュールのある環境にアクセスできないため、自分でテストすることはできません。
ruby-on-rails - パッセンジャーは .htaccess ファイルの書き換えルールでは機能しませんか?
virtualhost コンテキストでのみ機能する書き換えルールがあります。
PassengerEnabled off
.htaccess ファイルで設定した場合、書き換えルールは正常に機能しますが、それ以外の場合は、<VirtualHost>
サイト構成でのみ機能します。
パッセンジャーを使用して.htaccessファイルで書き換えルールを使用する方法はありますか?
ruby-on-rails - RoR 3、パッセンジャー、相対 URL、および root_url などのヘルパー メソッド
Passenger およびルーティング ヘルパー メソッドに関連するため、Rails 3 アプリで見られるルーティング動作を理解するのに本当に苦労しています。簡単な概要は次のとおりです。
ユーザーが私のサイトに登録するとき、私がやりたいことの 1 つは、ユーザーが有効な電子メール アドレスを送信したことを確認するために確認電子メールを送信することです。そこで、ある種のマジック トークンを含む URL をユーザーに送信するようにメーラーを設定し、送信したメールをユーザーが受信したことを証明しました。電子メールの本文の URL は、ルーティング ヘルパー メソッド (この場合はverify_url("a1b2c3")
) を介して生成され、URL は次のように適切に電子メールに詰め込まれます。
これはすべて、localhost:3000
問題なくうまく機能します。そのため、責任ある開発者として、次に行うことは、アプリをリモート QA 環境に移動し、すべてが引き続き機能することを確認することです。私のホスティング プロバイダーは Passenger を使用しており、次のように QA 環境にアクセスできるようにセットアップしています。
/qa
これを行うには、適切なファイルでRailsBaseURI を に設定し.htaccess
ます。そのため、QA 環境でサイトに登録しようとしています。ヘルパー メソッドverify_url
が次の URL を生成することを期待しています。
しかし、これは私が代わりに得るものです:
「qa」パスへの参照が明確に欠けていることに注意してください。答えを探してさまざまなブログやマニュアルを調べたところ、次の提案がありました。
- などの環境変数を設定します。
ENV['RAILS_RELATIVE_URL_ROOT']
ActionController::Base.relative_url_root
私の中で設定environment/qa.rb
- my にマップを追加して
config.ru
、特定のパスでアプリを初期化します - ルートをスコープにラップする
ただし、これらはそれぞれ非推奨 (最初の 2 つのオプション) であるか、次のように冗長なパス情報 (2 番目の 2 つのオプション) を生成することになるようです。
verify_url("a1b2c3")
を呼び出すときに、QA 環境の相対パスを含む適切な URL を実際に取得するように、これを設定する適切な方法を誰か教えてもらえますか? environments/qa.rb
理想的には、ある環境から次の環境に移動するときにアプリをまったく変更する必要がないように、これを何らかの方法で設定できるようにしたいと考えています。
前もって感謝します!
ruby-on-rails - Phusion Passenger mod_rails on Apache ぶら下げ
私はパッセンジャー 3.0.7 で Apache 2.2.3 を実行しています (先史時代の SLES11 Linux で)。リクエストがパッセンジャーを通過すると、アプリ プロセスが生成されますが、アプリが起動できないかのように永久にハングします。
簡単な hello world ラック アプリと、新しく作成した Rails 3 アプリ スケルトンでテストしました。アプリは webrick のプロダクション モードで起動するため、アプリ内部の問題はありません。
すべてapacheユーザーが所有する権限を確認しました。
Passenger は、プロセスを生成したことを apache に記録しますが、リクエスト URL は apache のアクセス ログにも到達せず、アプリ ログも空です。乗客の人々は、起動中にアプリがフリーズしたかのようにトレースが示されていると言いますが、config.ru に到達した痕跡さえ見つかりません。これはすべて、ハングするのは乗客のスポナーであることを示唆しています。
これはあまりにも不可解です。生成されたプロセスが、奇妙な apache 構成のためにリソースを取得できないのではないでしょうか?
これは誰かにベルを鳴らしますか? デバッグするためのすべてのヘルプまたはヒントに感謝します
Phusion google グループでこの問題を提起しましたが、解決策が見つかりませんでした。 https://groups.google.com/forum/#!topic/phusion-passenger/GlQIBNTyF6A
ヴィク
ruby-on-rails - Passengerのリクエストサイクルの外でガベージコレクションを実行する簡単な方法はありますか?
Unicornには、特定の数のリクエストの後に実行するために使用できるOobGCラックミドルウェアがあります。GC.start
Phusion Passengerにも同様のことがありますか?
ruby-on-rails - Apache2 での Rails Passenger の問題
apache2 と mod_rails (Phusion Passenger) を使用して、ubuntu10.10 で ruby on rails サーバーをセットアップしようとしています。
私は既に ruby 1.9.2-p0 と rails 3.0.8 をインストールしており、passenger は Passenger-install-apache2-module と Passenger gem (v3.0.7) でインストールしました。
次に、Apache 構成ファイルに 3 行追加するように指示されます。そこで、これらの行を「/etc/apache2/apache2.conf」に追加しました:
そして、「/etc/apache2/httpd.conf」を編集して追加しました:
また、/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/ にある mod_passenger.so ファイルが実際には存在しないこともわかりました。その名前は mod_passenger.c です。しかし、それからエラーは発生しません。
サーバーには、LAN 経由でのみアクセスできる必要があります。サーバーにアクセスすると、アプリのパブリック フォルダーにすべてのファイルとディレクトリが表示されますが、アプリ自体は起動しません。
Apache を再起動すると、mod_rails が既に読み込まれていることが表示されるので、パッセンジャーは実行されていると思いますが、アプリが起動しない理由がわかりません。
前もって感謝します!
ruby-on-rails - Fedora の起動時に Passenger/mod_rails で Apache を正常に起動する
前提と目的
Passenger/mod_rails fails to initialize Fedora 12 when starting Apacheに関するこのスレッドがあります。要するに、問題は許可によるものであり、これを呼び出すことでこれを回避できます
走る前に
と呼び出し
その後、元に戻します。うまく動作しますが、Fedora の再起動時にシーケンスが自動的に実行されるようにしたいと考えています。
問題
調べたところ、/etc/init.d/httpd
にリダイレクトするだけであることがわかりましたetc/rc.d/init.d/functions
。キー呼び出しは
したがって、この呼び出しをこのsetenforce
ような呼び出しで囲むだけでうまくいくと思いました。
しかし、うまくいきません。次のような新しいエラーが出力されます (httpd エラー ログに):
最後の を省略すると、最終setenforce 1
的に機能します。しかし、明らかに私はそれをどこかに戻したいと思っています。
質問
setenforce 0
これらとsetenforce 1
呼び出しを の起動シーケンスにフックするにはどうすればよいhttpd
ですか? /etc/init.d/httpd
を使わない自作のスクリプトを書くのが一番正しい気がするのですがsystemctl
、それは道が険しそうなので避けたいのですが… もし間違っていたら、簡単な書き方を教えていただければ幸いです。私自身のetc/init.d/httpd
スクリプト、私もそれをいただければ幸いです。
ruby-on-rails - Passenger と Apache の「問題が発生しました」エラー、WEBRick で動作
Passenger と Rails で Apache2 を実行しています。「rails s -e production」で Web アプリを実行できますが、Passenger ではアプリを実行できません。500エラーが発生するだけです。ログにはプリコンパイル エラー全体が表示されますが、構成をプリコンパイルまたは 'rake assets:precompile:all' に変更しても何も起こりません。私は既存の SQL データベースを使用していますが、Apache の背後で実行するとテーブルが見つからないというエラーが発生することもありますが、WEBRick では問題なく動作します。私は何もしなかった「RailsEnv production」ディレクティブを持っています。Passenger では動作しないのに WEBRick では動作しない理由がわかりません。特に、以前に Apache で動作させた後、アプリを別のディレクトリに再デプロイしただけでこれらの問題が発生しました。cache: get miss エラーもありますが、解決したと思いますが、アプリはまだ機能しません。私は昨日と今日、一日中それに取り組んできましたが、アプリをApacheで実行することはまだできません. すでにアクセス許可を試し、再インストールを試み、db:migrate を試し、すべてを試しました。なぜ失敗するのか誰か知っていますか?