2012-01-26 18 views
6

Jak skonfigurować szyny do udostępniania zasobów w innej poddomenie? Zasadniczo chcę, aby pomocnicy widoku/zasobów używali poddomeny dla wszystkich plików statycznych, takich jak;Udostępnianie zasobów na "statycznej" poddomenie

  • zamiast example.com/application.css -> static.example.com/application.css
  • zamiast example.com/application.js -> static.example.com/application.js
  • zamiast example.com/logo.jpg -> static.example.com/logo.jpg
+0

możesz nam powiedzieć dlaczego chcesz zrobić coś takiego? –

+0

Chcę użyć innego komputera do obsługi plików statycznych. –

+1

Istnieje wiele dobrych powodów, aby to zrobić; to powszechny wzór. – odigity

Odpowiedz

14

wiesz o opcji asset_host?

# config/environments/production.rb 
config.action_controller.asset_host = "static.example.com" 

jest to również możliwe, aby zrobić nazw dynamicznych:

ActionController::Base.asset_host = Proc.new { |source| 
    "http://assets#{Digest::MD5.hexdigest(source).to_i(16) % 2 + 1}.example.com" 
} 

http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html

+0

Idealny, więc nie tylko ja próbowałem to zrobić. –

+0

Nie, to jest coś, co zwykle robisz w aplikacjach internetowych na dużą skalę – phoet

1

Można również spróbować rack-cors gem dla Cross-Origin Resource Sharing. https://github.com/cyu/rack-cors

Użyłem tego klejnotu w aplikacji Rails 4, gdy moje ikony z czcionkami nie były renderowane, gdy zacząłem używać subdomen. To wiki umieścić mnie na właściwą drogę: https://github.com/bokmann/font-awesome-rails/wiki/CORS-Cross-Domain-Support

Oprócz modyfikacji mojego Gemfile, ja również umieścić następujący kod do config/application.rb ku górze według tej instrukcji: https://github.com/cyu/rack-cors/blob/master/examples/rails4/config/application.rb

config.middleware.insert_before 0, "Rack::Cors", :debug => true, :logger => (-> { Rails.logger }) do 
    allow do 
    origins '*' 

    resource '/cors', 
     :headers => :any, 
     :methods => [:post], 
     :max_age => 0 

    resource '*', 
     :headers => :any, 
     :methods => [:get, :post, :delete, :put, :patch, :options, :head], 
     :max_age => 0 
    end 
end 
Powiązane problemy