2016-03-12 6 views
4

Я получаю ошибки Not Found при попытке доступа к ресурсам внутри изолированного двигателя, установленного в качестве конечной точки в промежуточном программном обеспечении. Я пытаюсь получить доступ к активам изнутри движка, чтобы их можно было найти.Активы, не работающие в изолированной конечной точке двигателя

Мое подозрение в том, что маршрутизация активов не работает из-за того, как я маршрутизации запросов на определенном домене к конечной точке:

require 'addressable/uri' 

class AdminRouter 

    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    request = ActionDispatch::Request.new(env) 

    # Allow requests to the admin system through without going any further 
    if request.host == Rails.application.config.admin_address 
     Admin::Engine.call(env) 
    else 
     @app.call(env) 
    end 
    end 

end 

Я делаю это так, потому что я не хотите, чтобы маршруты приложений администратора были доступны из основного приложения и наоборот. Он работает хорошо, а не активы.

ответ

0

Похоже, что нет промежуточного программного обеспечения для активов. action_pack петли над каждым активом и присоединяет маршрут в главном маршрутизаторе, указывающей на стойку конечной:

/gems/actionpack-3.2.22.2/lib/sprockets/bootstrap.rb 

app.routes.prepend do 
    mount app.assets => config.assets.prefix 
end 

/gems/sprockets-2.2.3/lib/sprockets/server.rb 

, что в свою очередь, служит актив среди других вещей.

Таким образом, у моего Admin::Engine нет доступа к маршрутам, потому что они никогда не добавляются при загрузке приложения.

Моим обходным путем было использовать asset_host, чтобы указать специальное имя хоста для сервера активов. Затем я отправляю запросы на этот хост в основное приложение вместо механизма администратора.

 Смежные вопросы

  • Нет связанных вопросов^_^