Обслуживание активов на «статическом» поддомене - PullRequest
7 голосов
/ 26 января 2012

Как я могу настроить рельсы для обслуживания ресурсов на другом поддомене?Я в основном хочу, чтобы помощники вида / assets использовали поддомен для всех статических файлов, например;

  • вместо example.com/application.css -> static.example.com/application.css
  • вместо example.com/application.js -> static.example.com/application.js
  • вместо example.com/logo.jpg -> static.example.com/logo.jpg

Ответы [ 2 ]

15 голосов
/ 26 января 2012

Знаете ли вы о опции asset_host?

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

также можно делать динамические имена:

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

2 голосов
/ 09 декабря 2017

Вы также можете попробовать драгоценный камень rack-cors для совместного использования ресурсов из разных источников. https://github.com/cyu/rack-cors

Я использовал этот драгоценный камень в приложении на Rails 4, когда мои потрясающие шрифты иконки не отображались, когда я начал использовать поддомен. Эта вики поставила меня на правильный путь: https://github.com/bokmann/font-awesome-rails/wiki/CORS-Cross-Domain-Support

Помимо изменения моего Gemfile, я также поместил следующий код в config/application.rb к вершине в соответствии с этим руководством: 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
...