adjustments for hostname_aliases

Oleg committed Mar 24, 2012
commit 995690045943d58b128e5defe61115372c8265d1
Showing 5 changed files with 26 additions and 16 deletions
app/models/cms/site.rb +5 -5
@@ @@ -48,17 +48,17 @@ class Cms::Site < ActiveRecord::Base
return cms_site
end
+ protected
+
def self.real_host_from_aliases(host)
- if ComfortableMexicanSofa.config.site_aliases
- ComfortableMexicanSofa.config.site_aliases.each_with_index do |array, index|
- return ComfortableMexicanSofa.config.site_aliases[index].first if array.include?(host)
+ if aliases = ComfortableMexicanSofa.config.hostname_aliases
+ aliases.each do |alias_host, aliases|
+ return alias_host if aliases.include?(host)
end
end
host
end
- protected
-
def assign_identifier
self.identifier = self.identifier.blank?? self.hostname.try(:idify) : self.identifier
end
comfortable_mexican_sofa/configuration.rb b/lib/comfortable_mexican_sofa/configuration.rb +5 -5
@@ @@ -65,11 +65,11 @@ class ComfortableMexicanSofa::Configuration
# are accessible by default. Empty array will prevent rendering of all partials.
attr_accessor :allowed_partials
- # Site aliases, if you want to have aliases for your site, All find_site calls
- # are converted to the first one on array. Good for harmozing production env with dev/testing envs.
- # e.g. site_aliases = [['domain.com', 'domain.inv'], ['seconddomain.com', 'desconddomain.lvh.me']]
+ # Site aliases, if you want to have aliases for your site. Good for harmonizing
+ # production env with dev/testing envs.
+ # e.g. config.site_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
# Default is nil (not used)
- attr_accessor :site_aliases
+ attr_accessor :hostname_aliases
# Configuration defaults
def initialize
@@ @@ -97,7 +97,7 @@ class ComfortableMexicanSofa::Configuration
@allow_irb = false
@allowed_helpers = nil
@allowed_partials = nil
- @site_aliases = nil
+ @hostname_aliases = nil
end
end
test/test_helper.rb +1 -0
@@ @@ -39,6 +39,7 @@ class ActiveSupport::TestCase
config.allow_irb = false
config.allowed_helpers = nil
config.allowed_partials = nil
+ config.hostname_aliases = nil
end
ComfortableMexicanSofa::HttpAuth.username = 'username'
ComfortableMexicanSofa::HttpAuth.password = 'password'
test/unit/configuration_test.rb +1 -0
@@ @@ -31,6 +31,7 @@ class ConfigurationTest < ActiveSupport::TestCase
assert_equal false, config.allow_irb
assert_equal nil, config.allowed_helpers
assert_equal nil, config.allowed_partials
+ assert_equal nil, config.hostname_aliases
end
def test_initialization_overrides
test/unit/models/site_test.rb +14 -6
@@ @@ -119,12 +119,20 @@ class CmsSiteTest < ActiveSupport::TestCase
assert_equal site_c, Cms::Site.find_site('test2.host', '/fr')
assert_equal site_c, Cms::Site.find_site('test2.host', '/fr/some/path')
-
- site_aliases_org = ComfortableMexicanSofa.config.site_aliases
- ComfortableMexicanSofa.config.site_aliases=[['test.host', 'test99.host']]
- assert_equal site_a, Cms::Site.find_site('test99.host', '/some/path')
- ComfortableMexicanSofa.config.site_aliases = site_aliases_org
-
+ end
+
+ def test_find_site_with_site_alias
+ site_a = cms_sites(:default)
+ site_b = Cms::Site.create!(:identifier => 'site_b', :hostname => 'test2.host')
+
+ ComfortableMexicanSofa.config.hostname_aliases = {
+ 'test.host' => 'alias_a.host',
+ 'test2.host' => %w(alias_b.host alias_c.host)
+ }
+
+ assert_equal site_a, Cms::Site.find_site('alias_a.host')
+ assert_equal site_b, Cms::Site.find_site('alias_b.host')
+ assert_equal site_b, Cms::Site.find_site('alias_c.host')
end
end
\ No newline at end of file