web-dev-qa-db-ja.com

アセットパイプラインパスにフォルダーを追加しますか?

最近Rails 3.0からRails 3.2に更新したRailsアプリがあります。このアプリは複数のクライアントにサービスを提供します。クライアントごとにカスタマイズすると、ディレクトリapp/themesがあります。サブモジュールがあります。各サブモジュールには、locales/en.ymlviews/layoutsviews/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"

これを行う方法はありますか?または、アセットを実際のアセットディレクトリに手動で移動する必要がありますか?

18
agmcleod

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"
16
agmcleod