Bonjour à tous,
Voila j’utilise un module pour gérer des sous domaines, placé dans le
dossier lib/ qui me retourne une instance particulière d’un modele
selon le sous sous-domaine. Ce module placé dans application.rb est
utilisable par tous les controleurs. Ceci me sert à scoper les autres
données liées à cet instance. Mon problème est que je n’arrive pas à
le tester avec rspec dans le contexte d’un sous domaine justement. Par
ailleurs j’ai dans application.rb un before_filter qui teste la
validité du sous-domaine demandé
Voici le module :
Inspired by
http://dev.rubyonrails.org/svn/rails/plugins/account_location/lib/account_location.rb
module SubdomainTeams
def self.included( controller )
if controller.respond_to? :helper_method
controller.helper_method
(:team_domain, :team_subdomain, :team_url,
:current_team,:default_team_subdomain, :default_team_url)
end
end
protected
TODO: need to handle www as well
def default_team_subdomain
‘’ # ‘www’ || ‘’
end
def team_url( team_subdomain = default_team_subdomain, use_ssl =
request.ssl? )
http_protocol(use_ssl) + team_host(team_subdomain)
end
def team_host( subdomain )
team_host = ‘’
team_host << subdomain + ‘.’
team_host << team_domain
end
def team_domain
team_domain = ‘’
team_domain << request.domain + request.port_string
end
def team_subdomain
request.subdomains.first || ‘’
end
def default_team_url( use_ssl = request.ssl? )
http_protocol(use_ssl) + team_domain
end
def current_team
Team.find_by_subdomain(team_subdomain)
end
def http_protocol( use_ssl = request.ssl? )
(use_ssl ? “https://” : “http://”)
end
end
et voici un un contrôleur l’utilisant :
class PostsController < ApplicationController
before_filter :find_team
def index
if current_team
@posts = current_team.posts.of_the_week
elsif @team
@posts = @team.posts.of_the_week
end
end
…
Le before_filter est :
before_filter :check_team_status
def check_team_status
unless team_subdomain == default_team_subdomain
# TODO : check if the team has a valid subscription
if !current_team.nil? && current_team.valid_subscription == true
return true
end
redirect_to default_team_url if current_team.nil?
end
end
Comment faire pour tester l’action index du controleur Posts ds le
contexte d’un sous-domaine ? C’est à dire avec la variable
current_team à non nil ?
Merci d’avance.
Gilles.