如何配置rails以在不同子域上提供资源?我基本上希望视图/资产助手为所有静态文件使用子域,例如;
答案 0 :(得分:15)
你知道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
答案 1 :(得分:2)
您还可以尝试使用rack-cors
gem进行跨源资源共享。 https://github.com/cyu/rack-cors
我在Rails 4应用程序中使用了这个gem,当我开始使用子域时,我的字体很棒的图标无法渲染。这个wiki让我走上了正确的道路: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