2013-02-06 12 views
16

Wir haben eine Rails App, die ich vor kurzem von Rails 3.0 auf Rails 3.2 aktualisiert habe. Diese App bedient mehrere Clients. Um es für jeden Kunden anzupassen, haben wir das Verzeichnis app/themes. Da sind Submodule. Jedes Submodul enthält Dinge wie locales/en.yml, views/layouts, views/controller_name usw. Wir verwenden die prepend_view_path, um die Themenansichten hinzuzufügen, und die I18n.load_path hinzufügen in den Sprachumgebungen. Wir betrachten die Verwendung der Asset-Pipeline, damit wir den gesamten Mix an Client-Material aus dem öffentlichen Verzeichnis heraushalten und in jedem Thema beibehalten können.Ordner zum Pfad der Anlagenpipeline hinzufügen?

Gibt es eine Möglichkeit, ich kann Schienen dynamisch angeben, welche Thema/Thema-Name/Assets Ordner ich möchte? Wir verwenden Einstellungslogik, um festzulegen, welches Thema aktiv ist. Also, wenn ich das Thema haben auf „google“, die ApplicationController lädt dann Dateien aus dem Pfad:

app/themes/google/locales/*.yml 
app/themes/google/views 

Was Ich mag würde der Lage sein, die Manifest-Datei zu tun ist, haben,

app/themes/google/assets/stylesheets/application.css 

leicht zugänglich, um das Layout, so wie sonst in einer app/views/layouts Datei:

= stylesheet_link_tag "application" 

gibt es eine Möglichkeit kann ich das tun? Oder müssen wir die Assets manuell in das Verzeichnis der tatsächlichen Assets verschieben?

+0

Es ist eine Möglichkeit, Vermögenswerte pro Controller zu laden, aber das ist nicht das, was Sie suchen. Sie können in Betracht ziehen, dass Asset-Pipeline (in der Produktion) alle Assets in einer einzigen Datei (bzw. 'application.js' und' application.css') in '/ public' vorkompiliert und optimiert. Der Zweck besteht darin, die Anzahl der Aufrufe zu reduzieren Server zum Abrufen von Assets. –

Antwort

15

Waren die Lage, es in der application.rb zu tun:

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" 
+0

nach dem Hinzufügen einer Zeile wie 'config.assets.paths <<" # {Rails.root}/app/assets/fonts "' oder die, die Sie hinzugefügt haben, gibt es einen Befehl, der ausgeführt werden muss? Die Schriftarten, die ich verwenden möchte, funktionieren nicht. Es stellte sich heraus, dass dies eine ähnlich genug Frage war, um hier einen Kommentar hinzuzufügen, anstatt eine neue Frage zu beginnen. –

+0

Ist dies ein Grund, warum Sie Zeichensätze in der Asset-Pipeline hinzufügen? Kann sie immer noch öffentlich machen und sie auf diese Weise referenzieren, wie jede andere öffentliche Datei, die Sie in 3.0 vorher haben würden. – agmcleod

+0

Ja, ich versuche, die zurb-Foundation-Icons in mein Projekt einzufügen, und es gibt vier Font-Dateien verschiedener Typen und .css-Stylesheets, die ich bisher angenommen habe mitzur-Stiftung. –

Verwandte Themen