Здравствуйте!
Делаю rails приложение, которое будет обслуживать много сайтов.
Структура получается такая:
- assets
-- stylesheets
--- site1
--- site2
-- javascripts
--- site1
--- site2
-- images
--- site1
--- site2
-views
-- site1
--- layouts
--- pages
-- site2
--- layout
--- pages
Пусть до views определяю так:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
layout :determine_site
before_filter :determine_view_path
private
def determine_site
if Rails.env.production?
@site = Site.find_by :domain_production => request.host
@site.code if @site.present?
else
@site = Site.find_by :domain_local => request.host
@site.code if @site.present?
end
end
def determine_view_path
prepend_view_path ["#{Rails.root}/app/views/#{determine_site}"]
end
end
При разработке на локальной машине, все хорошо. Все ассеты есть.
После деплоя на прод, все ассеты на сайтах не отображаются, даже rails_admin голый.
В assets.rb:
Rails.application.config.assets.precompile += %w( ckeditor/* )
Rails.application.config.assets.precompile += %w( site1/*.css site1/*.js )
Rails.application.config.assets.precompile += %w( site2/*.css site2/*.js )
Что я делаю не так? Подскажите пожалуйста как решить проблему с ассетами
UPD.
На сервере, в /shared/public/assets/ ассеты генерируются, но почему то, ссылки которые ведут на них, отдают 404 not found
UPD.2
Если в папке public создать например директорию "1" и закинуть туда файл test.css, то перейдя по прямой ссылке, он открывается. Если же этот файл закинуть уже в директорию assets, то запрос на файл test.css отдает 404
UPD.3
Проблема решена. Оказывается сисадмин неправильно настроил локейшен в nginx.