Possiedo un'app Rails 4 multi-tenant che utilizza sottodomini con schemi PostgreSQL per "affittare" l'applicazione. Ho i sottodomini jolly "*" impostati su Heroku e Cloudflare e il sito viene caricato, ma continua a "pensare" che il www sia un sottodominio valido. Per questo motivo, i collegamenti normalmente validi (che funzionano in fase di sviluppo) non funzionano in produzione perché www.mysite.com/accounts/new ecc. È uguale a asdf.mysite.com/accounts/new. C'è un modo in cui posso far sì che la mia app ignori www come sottodominio? Mi piacerebbe comunque che mysite.com reindirizzasse a www.mysite.com, ma praticamente basta impostare il sottodominio su false quando è www?Rails + Heroku + Cloudflare - Elimina www come sottodominio
Per rendere le cose un po 'più concrete, nel mio application_controller, ho del codice che fa quanto segue. Nota i commenti In modalità di sviluppo, il redirect_to root_url (sottodominio: false) funziona, ma in produzione, semplicemente infinitamente reindirizza e non carica. Per farlo caricare, faccio semplicemente il rendering della pagina, ma così facendo non imposta mai il sottodominio su false.
def load_schema
Apartment::Tenant.switch!('public')
return unless request.subdomain.present?
if current_account
Apartment::Tenant.switch!(current_account.subdomain)
else
redirect_to root_url(subdomain: false) # Works locally, but infinite re-direct in production
#render 'welcome/index' # - Renders the page in production, but nothing else works.
end
end
In sostanza, tutto funziona come previsto in modalità di sviluppo, ma in produzione, ci sembrano essere alcuni problemi di DNS che hanno bisogno di appianare, ma io non riesco a capire cosa fare. qualche idea?
Al momento ho 3 record DNS impostati sul CloudFlare: A - mydomain.com - punta a [Indirizzo IP] CNAME - www - alias di myapp.herokuapp.com CNAME - * - alias myapp.herokuapp. com Ho provato a rimuovere il www e questo fa la stessa cosa (penso che sia preso dal carattere jolly?) qualche idea su come configurarlo? È giusto? Oppure un esempio di route.rb con vincolo sarebbe fantastico. Grazie per la risposta! – Trinculo