Ruby on Rails - jedna aplikacja z wieloma domenami (Dreamhost + Passenger)

16 Apr 2009 | Adam Przymusiała

Jakiś czas temu sporo namęczyłem się z odpaleniem jednej aplikacji RoR tak by działała na wielu domenach równocześnie (i dla każdej z nich troszkę inaczej się zachowywała.

Całość to sieć sklepów internetowych sprzedających różne systemy antywirusowe z jedną bazą danych i jednym panelem administracyjnym).

Niestety nie posiadam własnej maszyny a tylko współdzielony hosting na DreamHost.com więc uciec się musiałem do kilku prostych sztuczek. Po pierwsze uruchomić mod_rails na każdej subdomenie, po drugie utworzyć symlinki z katalogów subdomen na katalog z aplikacją.

Wystarczyło na katalog "public" - jednak nie wiem czy to najlepszy pomysł gdyż podczas prób mod_rails kilka razy się wywalił… jeśli ktoś wymyśli lepszy pomysł to bardzo proszę o maila :) - może było by zsymlinkować cały katalog z aplikacją?.

Wykrywanie domeny przez którą klient łączy się ze sklepem również do trudnych nie należało, w app/application.rb mam funkcję która inicjalizuje zmienną @strona (którą później używam do wczytania odpowiedniej konfiguracji)

@strona = Site.find_by_host(request.host)
  • Site - moja tabela w bazie danych gdzie trzymane są ustawienia dla różnych domen
  • find_by_host - szukanie po odpowiedniej kolumnie gdzie są zapisane domeny
  • request.host - zmienna w której zapisany jest host przez który się łączymy ze stroną

Dodaj komentarz!

Czytaj dalej:

16 Apr 2009
Ruby on Rails i php w jednym domu stały czyli Passenger vs. FastCGI na DreamHost.com
Czytaj dalej