@vadimstroganov

Как исправить отображение ассетов в мультисайтовом rails приложении?

Здравствуйте!

Делаю 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
0802488aebf24ce2bf670cb8ef833aa1.png

UPD.2
Если в папке public создать например директорию "1" и закинуть туда файл test.css, то перейдя по прямой ссылке, он открывается. Если же этот файл закинуть уже в директорию assets, то запрос на файл test.css отдает 404

UPD.3
Проблема решена. Оказывается сисадмин неправильно настроил локейшен в nginx.
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 1
IvanTheCrazy
@IvanTheCrazy
А как подключаются ассеты?
если осталось что-то типа
= stylesheet_link_tag 'application', media: 'all'
то нужно переделать чуть иначе:
= stylesheet_link_tag "site1/application", :media => "all"
у меня таким образом отлично работает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы