Konfiguracja
Nasza aktualna aplikacja Rails jest wykonana z pod-aplikacji, które są montowane jako silniki. Zazwyczaj te silniki są montowane na subdomenie w głównym routes.rb
pliku następującoTrasy w silniku zamontowanym na poddomenie nie dziedziczą ograniczeń.
mount MySubApp::Engine => '/', as: :sub_app, constraints: {subdomain: 'sub_app'}
problem
trasach w MySubApp
„s routes.rb
pliku nie uzyskać subdomeny przy użyciu nazwanych _url
pomocników. Na przykład następujące w apps/my_sub_app/config/routes.rb
MySubApp::Engine.routes.draw do
resources :foos
end
daje nam sub_app.foo_url(5)
ale skutkuje
http: // www .example.com /foos/5
gdy chcemy
http: // sub_app .example.com/foos/5
tl; dr
Jak mogę uzyskać ograniczenia montażowe silnika przekazywany do swoich nazwanych tras?
EDIT: obejście
Chociaż ja wciąż wolą lepsze rozwiązanie dodaje zadziała. Można owinąć wszystkie szlaki w każdej z aplikacji sub routes.rb
plików, które mogą być montowane na subdomenie jak tak
MySubApp::Engine.routes.draw do
constraints Rails.application.routes.named_routes[:sub_app].constraints do
resources :foos
end
end
EDIT 2: (? od skasowany) Znacznie mniej pożądane obejście
commenter wskazał możesz przekazać pomocnikom opcję subdomain
, ale chcielibyśmy uniknąć konieczności używania sub_app.foo_url(5, {subdomain: 'sub_app'})
dla każdego linku poddomeny krzyżowej. Nawet jeśli przenieśliśmy nazwę subdomeny do ENV var i zrobiliśmy opakowanie, nie jest to SUCHA.
Szukasz multi-najemcy? Jeśli tak, istnieje Railscast do tego, ale jest pro. http: // railscasts.com/episodes/388-multitenancy-with-scopes? view = asciicast. Osobiście nigdy z nimi nie współpracowałem, więc nie mogę ci pomóc. Właśnie zobaczyłem ten odcinek jakiś czas temu i przekazuję go dalej, jeśli w rzeczywistości jest to, czego szukasz. – MCB
Dzięki @MCB. Sprawdzę to wideo, kiedy będę mógł i zaktualizuję to, jeśli zapewni dobre wyniki. – Aaron
Właśnie widziałem Railscast i nie jest to, czego szukamy: /. W rzeczywistości mamy wiele aplikacji działających jako silniki w jednej aplikacji Railsowej. Każdy z silników jest montowany z ograniczeniem subdomeny, ale to samo ograniczenie nie jest przenoszone na poszczególne pliki tras silników. – Aaron