🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

1回答

828閲覧

【難題】railsで使用するassets(css)をapacheでドメインごとに切り替えたい

nakki

総合スコア9

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

2クリップ

投稿2019/09/25 08:11

編集2019/10/02 01:10

Rails5とApacheとPassengerでシステムを作成しています。
apache側で複数のドキュメントルートを設定して、それぞれのドキュメントルートで異なるrailsのcssを読み込みたいです。

apacheの設定でドキュメントルートを複数(2つ)設定しています
以下がapacheの設定ファイルになります。

passenger.conf

1etc/httpd/conf.d/passenger.conf 2 3 4LoadModule passenger_module 5中略 6<IfModule mod_passenger.c> 7中略 8</IfModule> 9 10Listen 80 11 12<VirtualHost *:80> 13 ServerName huga.com 14 DocumentRoot /home/hoge/rails_app/public_2 # ディレクトリ指定しています 15 PassengerEnabled on 16 ErrorLog /var/log/httpd/error_log 17 CustomLog /var/log/httpd/access_log combined 18 AddDefaultCharset UTF-8 19 <Directory /home/hoge/rails_app/public_2> # 指定しています 20 AllowOverride all 21 Options -MultiViews 22 Require all granted 23 </Directory> 24</VirtualHost> 25 26# 複数のドメインを設定 27<VirtualHost *:80> 28 ServerName hoge.com 29 DocumentRoot /home/hoge/rails_app/public 30 PassengerEnabled on 31 ErrorLog /var/log/httpd/error_log 32 CustomLog /var/log/httpd/access_log combined 33 AddDefaultCharset UTF-8 34 <Directory /home/hoge/rails_app/public> 35 AllowOverride all 36 Options -MultiViews 37 Require all granted 38 </Directory> 39 40</VirtualHost>

上記のように設定しましたが、rails assets:precompileを用いると自動的に/home/hoge/rails_app/public/assetsにコンパイルされたファイルが配置されてしまいます。うまく切り分ける方法があれば教えていただけませんでしょうか。

手段にはこだわらないのですが、assets:precompileを用いてドメインごとにcssを分けることができれば大変ありがたいです。

現状は app/assets/images、javascripts, stylesheetsがありますが。
例えば
app/assets_hoge/images、javascripts, stylesheets
app/assets_huga/images、javascripts, stylesheets

を対象にassets:precompileすると
rails_app/public/assets
rails_app/public/assets_hoge
rails_app/public/assets_huga

のようにcompileのファイルがそれぞれのディレクトリ内に分ければスムーズだと思っています。。。。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2019/10/04 13:32

質問が理解できないでいます。 二つのドメインを二つのDocumentRootに設定しているものの、分けているのはpublicだけですから、assets:precompile のソースは同じものを使うことになります。 ということは仮に publicとpublic2に結果を入れることができたにしても、CSSは同じもので、ドメイン毎に切り分けるということにはならないのでは?
guest

回答1

0

こういうのはどうかな。

  1. apacheの設定ではドメイン名だけ変えて他は全く同じにする。
  2. application_controller で request.domain から domain_name を得る

3-1) layout/application.html.* にてとり込む CSS を #{domein_name}.css にする
3-2)若しくは、使う layoutを #{domain_name}.html.* に指定し、そこでつかうCSSを希望のものにする

投稿2019/10/05 02:25

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問