最近 Rails 3.0 から Rails 3.2 にアップデートした Rails アプリがあります。このアプリは複数のクライアントにサービスを提供します。各クライアント向けにカスタマイズするために、ディレクトリ がありますapp/themes
。 にはサブモジュールがあります。各サブモジュールにはlocales/en.yml
、views/layouts
、views/controller_name
、 などが含まれます。 を使用してprepend_view_path
テーマ ビューを追加し、 をI18n.load_path
使用してロケールを追加します。アセット パイプラインを使用して、さまざまなクライアント マテリアルをパブリック ディレクトリから切り離し、各テーマ内に保持することを検討しています。
Rails に、必要な theme/theme-name/assets フォルダを読み込むように動的に指示する方法はありますか? 設定ロジックを使用して、どのテーマをアクティブにするかを設定します。したがって、テーマを「google」に設定した場合、次のApplicationController
パスからファイルが読み込まれます。
app/themes/google/locales/*.yml
app/themes/google/views
私がやりたいのは、マニフェストファイルを用意することです。
app/themes/google/assets/stylesheets/application.css
ファイルの場合と同じように、レイアウトに簡単にアクセスできますapp/views/layouts
。
= stylesheet_link_tag "application"
これを実行する方法はありますか? または、アセットを実際のアセット ディレクトリに手動で移動する必要がありますか?
ベストアンサー1
application.rb で実行できました:
require "#{Rails.root}/app/models/settings.rb"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/stylesheets"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/images"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/javascripts"