Hello,
I am having a strange problem w/ rails 3 routing constraints. I have this custom class w/ a self.matches? method as such:
class PersonalizedDomain
def self.matches?(request)
Rails.logger.info("self.matches? NEVER CALLED!!!!")
end
and in routes I use the custom Class like this:
constraints(PersonalizedDomain) do
Rails.logger.info("constraints block ENTERED")
root :to => "projects#show"
end
The self.matches?(request) method never gets called and I don’t understand why?
forgot to mention that I’m requiring lib/personalized_domain in routes:
require 'personalized_domain' #resides in lib
and in application.rb, I load my lib paths:
config.autoload_paths += %W(#{config.root}/lib)
SOLUTION: Here’s an update - I did figure out why my custom constraint wasn’t working correctly and here’s the changes I made:
In PersonalizedDomain I changed the self.matches? method from a class method to an instance method as such:
# lib/personalized_domain.rb
class PersonalizedDomain
def matches?(request)
case request.host
when "www.#{APP_CONFIG[:domain]}", "#{APP_CONFIG[:domain]}", nil
false
else
true
end
end
end
and in routes I did this:
constraints(PersonalizedDomain.new) do
resources :posts
resources :personalized
end