最近Rails 3.0からRails 3.2に更新したRailsアプリがあります。このアプリは複数のクライアントにサービスを提供します。クライアントごとにカスタマイズすると、ディレクトリapp/themes
があります。サブモジュールがあります。各サブモジュールには、locales/en.yml
、views/layouts
、views/controller_name
などが含まれます。prepend_view_path
を使用してテーマビューを追加し、I18n.load_path
を使用してロケールを追加します。アセットパイプラインの使用を検討しているので、クライアントマテリアルのすべての組み合わせをパブリックディレクトリから除外し、各テーマに含めることができます。
Rails必要なテーマ/テーマ名/アセットフォルダをロードするように動的に指示する方法はありますか?設定ロジックを使用して、アクティブなテーマを設定します。したがって、テーマを設定している場合「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"
これを行う方法はありますか?または、アセットを実際のアセットディレクトリに手動で移動する必要がありますか?
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"