7

Я делаю несколько экспериментов с монтируемыми двигателями. Прежде всего, мне нужно ваше мнение о сценарии. Является ли хорошей идеей, что мы делаем «кусок больших модулей» в приложении как «монтируемые двигатели».Установите двигатель на поддомену Rails 3.1

Я пробовал это, он отлично работает. В монтируемом двигателе мы можем получить доступ к моделям приложения по всему миру, и в приложении мы можем получить доступ к моделям двигателей с приставкой модуля. Поэтому он отлично работает для меня.

Теперь пришел к первоначальному вопросу:

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

root :to=>'dashboard#index' 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 

В этом случае mydomain.com и admin.mydomain.com идет в dashboard controller. Если я изменить свои предпочтения, как этот

scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
root :to=>'dashboard#index' 

В этом случае mydomain.com и admin.mydomain.com идет в engine specific root controller.

Как мы можем выполнить этот сценарий и подключить движок к конкретному поддомену?

ответ

11

я выполнить задачу, используя эти записи маршрута:

scope :subdomain => 'www' do 
    root :to=>'dashboard#index' 
end 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
+0

Что делать, если я хочу иметь доступ к моему домену foo.com на обоих сайтах foo.com и www.foo.com? Указанные выше изменения не позволяют загружать контент с сайта foo.com. – jkndrkn

+0

См. Ответ @samuelkobe выше. –

+0

Нельзя ли использовать регулярное выражение в: subdomain? , например. scope: subdomain =>/^ $ | www/do ... –

5

Работа с Rails 3.2.12 и рубин 1.9.3-194 я пришел к иному решению, которое также работает локально для избежания WWW. субдомен, позволяя ему быть двигателем в определенном субдомене.

get "home/index" 

constraints :subdomain => 'store' do 
    mount Spree::Core::Engine, :at => '/' 
end 

root :to => 'home#index' 

Я мог бы полностью ошибиться, но он работает до сих пор.

+0

Очень полезно! Директива mount может быть сделана еще короче, используя «mount Spree :: Core :: Engine => '/'' – Epigene