subdomain-fu 0.5.4 → 1.0.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +30 -27
- data/VERSION.yml +4 -4
- data/lib/subdomain-fu.rb +59 -39
- data/lib/subdomain_fu/url_rewriter.rb +25 -40
- data/rails/init.rb +3 -3
- data/spec/spec_helper.rb +4 -4
- metadata +4 -5
- data/lib/subdomain_fu/routing_extensions.rb +0 -61
data/README.rdoc
CHANGED
@@ -5,17 +5,19 @@ It takes aspects from account_location, request_routing, and other snippets
|
|
5
5
|
found around the web and combines them to provide a single, simple solution
|
6
6
|
for subdomain-based route and url management.
|
7
7
|
|
8
|
+
**Note**: SubdomainFu has been rewritten to be compatible with Rails 3. If
|
9
|
+
you are looking to use it on Rails 2.x, please install version v0.5.x instead.
|
10
|
+
|
8
11
|
== Installation
|
9
12
|
|
10
13
|
SubdomainFu is available both as a traditional plugin and a GemPlugin. To
|
11
|
-
install it as a traditional plugin
|
14
|
+
install it as a traditional plugin:
|
12
15
|
|
13
|
-
script/plugin install git://github.com/
|
16
|
+
script/plugin install git://github.com/intridea/subdomain-fu.git
|
14
17
|
|
15
|
-
To use it as a gem, add it to your
|
16
|
-
|
17
|
-
config.gem 'subdomain-fu'
|
18
|
+
To use it as a gem, add it to your Gemfile:
|
18
19
|
|
20
|
+
gem 'subdomain-fu'
|
19
21
|
|
20
22
|
== Examples
|
21
23
|
|
@@ -51,7 +53,7 @@ You have access to current_subdomain and current_domain methods.
|
|
51
53
|
|
52
54
|
[current_subdomain] returns all subdomains. For the URL http://awesome.website.stuff.example.com, it will return "awesome.website.stuff"
|
53
55
|
|
54
|
-
[current_domain] returns
|
56
|
+
[current_domain] returns the domain excluding for the subdomain, including the TLD. For the URL http://awesome.website.stuff.example.com, it will return "website.stuff.example.com"
|
55
57
|
|
56
58
|
If what you really want is the entire domain, then use <tt>request.domain</tt> in
|
57
59
|
your controllers. The purpose of current_domain is to only strip off the first
|
@@ -59,52 +61,53 @@ subdomain, if any, and return what's left.
|
|
59
61
|
|
60
62
|
== Configuration
|
61
63
|
|
62
|
-
You may need to configure SubdomainFu based on your development setup.
|
63
|
-
|
64
|
+
You may need to configure SubdomainFu based on your development setup. To configure
|
65
|
+
SubdomainFu simply call a block in an initializer like so:
|
66
|
+
|
67
|
+
SubdomainFu.configure do |config|
|
68
|
+
config.option_name = value
|
69
|
+
end
|
64
70
|
|
65
|
-
|
71
|
+
Some available options are enumerated below.
|
72
|
+
|
73
|
+
=== tld_size
|
66
74
|
|
67
75
|
A hash for each environment of the size of the top-level domain name.
|
68
76
|
(something.com = 1, localhost = 0, etc.)
|
69
77
|
|
70
|
-
|
71
|
-
|
78
|
+
config.tld_size = 1 # sets for current environment
|
79
|
+
config.tld_sizes = {:development => 0,
|
72
80
|
:test => 0,
|
73
81
|
:production => 1} # set all at once (also the defaults)
|
74
82
|
|
75
|
-
===
|
83
|
+
=== mirrors
|
76
84
|
|
77
85
|
Mirrors are the subdomains that are equivalent to no subdomain (i.e. they 'mirror')
|
78
86
|
the usage of the root domain.
|
79
87
|
|
80
|
-
|
88
|
+
config.mirrors = %w(www site we) # Defaults to %w(www)
|
81
89
|
|
82
|
-
===
|
90
|
+
=== preferred_mirror
|
83
91
|
|
84
92
|
SubdomainFu also understands the notion of a 'preferred mirror', that is, if you
|
85
93
|
always want your links going to 'www.yourdomain.com' instead of 'yourdomain.com',
|
86
94
|
you can set the preferred mirror like so:
|
87
95
|
|
88
|
-
|
96
|
+
config.preferred_mirror = "www"
|
89
97
|
|
90
98
|
Now when you create a link with <tt>:subdomain => false</tt> in the options the subdomain
|
91
99
|
will default to the preferred mirror.
|
92
100
|
|
93
|
-
== Routing
|
94
|
-
|
95
|
-
SubdomainFu can also work within Rails' routing for subdomain-specific routes. For instance, if you only wanted your administrative tools available in the "admin" subdomain you could add this to your <tt>config/routes.rb</tt> file:
|
101
|
+
== Routing (Deprecated)
|
96
102
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
end
|
101
|
-
|
102
|
-
In addition to specifying a string, you could also specify <tt>false</tt> to require no subdomain (this includes mirrors that you've set up such as www) or a regular expression to match a range of subdomains.
|
103
|
+
Subdomain constraint routing has been removed from the scope of this plugin as Rails 3
|
104
|
+
provides the functionality by default. For more info, see this blog post:
|
105
|
+
http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/
|
103
106
|
|
104
107
|
== Resources
|
105
108
|
|
106
|
-
* GitHub Repository: http://github.com/
|
107
|
-
* RDocs: http://rdoc.info/projects/
|
109
|
+
* GitHub Repository: http://github.com/intridea/subdomain-fu
|
110
|
+
* RDocs: http://rdoc.info/projects/intridea/subdomain-fu
|
108
111
|
|
109
|
-
Copyright (c) 2008 Michael Bleigh (http://www.mbleigh.com/) and
|
112
|
+
Copyright (c) 2008-2010 Michael Bleigh (http://www.mbleigh.com/) and
|
110
113
|
Intridea, Inc. (http://www.intridea.com/). Released under the MIT license
|
data/VERSION.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
---
|
2
|
-
:major:
|
3
|
-
:build:
|
4
|
-
:minor:
|
5
|
-
:patch:
|
2
|
+
:major: 1
|
3
|
+
:build: beta2
|
4
|
+
:minor: 0
|
5
|
+
:patch: 0
|
data/lib/subdomain-fu.rb
CHANGED
@@ -1,57 +1,77 @@
|
|
1
|
-
require 'subdomain_fu/routing_extensions'
|
2
1
|
require 'subdomain_fu/url_rewriter'
|
3
2
|
|
4
3
|
module SubdomainFu
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@@tld_sizes = DEFAULT_TLD_SIZES.dup
|
13
|
-
|
14
|
-
# Subdomains that are equivalent to going to the website with no subdomain at all.
|
15
|
-
# Defaults to "www" as the only member.
|
16
|
-
DEFAULT_MIRRORS = %w(www)
|
17
|
-
mattr_accessor :mirrors
|
18
|
-
@@mirrors = DEFAULT_MIRRORS.dup
|
19
|
-
|
20
|
-
mattr_accessor :preferred_mirror
|
21
|
-
@@preferred_mirror = nil
|
22
|
-
|
23
|
-
mattr_accessor :override_only_path
|
24
|
-
@@override_only_path = false
|
25
|
-
|
26
|
-
# Returns the TLD Size of the current environment.
|
27
|
-
def self.tld_size
|
28
|
-
tld_sizes[RAILS_ENV.to_sym]
|
4
|
+
class << self
|
5
|
+
attr_accessor :config
|
6
|
+
|
7
|
+
def config
|
8
|
+
self.config = Configuration.new unless @config
|
9
|
+
@config
|
10
|
+
end
|
29
11
|
end
|
30
12
|
|
31
|
-
#
|
32
|
-
|
33
|
-
|
13
|
+
# The configurable options of Subdomain Fu. Use like so:
|
14
|
+
#
|
15
|
+
# SubdomainFu.configure do |config|
|
16
|
+
# config.tld_size = 2
|
17
|
+
# config.preferred_mirror = 'www'
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# Available configurations are:
|
21
|
+
#
|
22
|
+
# <tt>tld_size</tt>: :: The size of the top-level domain. For example, 'localhost' is 0, 'example.com' is 1, and 'example.co.uk' is 2.
|
23
|
+
# <tt>mirrors</tt>: :: An array of subdomains that should be equivalent to no subdomain. Defaults to <tt>['www']</tt>.
|
24
|
+
# <tt>preferred_mirror</tt>: The preferred mirror subdomain to which to rewrite URLs. No subdomain is used by default.
|
25
|
+
# <tt>override_only_path</tt>: :: If <tt>true</tt>, changing the subdomain will emit a full URL in url_for options, even if it wouldn't have otherwise.
|
26
|
+
def self.configure
|
27
|
+
self.config ||= Configuration.new
|
28
|
+
yield(self.config)
|
29
|
+
end
|
30
|
+
|
31
|
+
class Configuration
|
32
|
+
attr_accessor :tld_sizes, :mirrors, :preferred_mirror, :override_only_path
|
33
|
+
|
34
|
+
@@defaults = {
|
35
|
+
:tld_sizes => {:development => 1, :test => 1, :production => 1},
|
36
|
+
:mirrors => %w(www),
|
37
|
+
:preferred_mirror => nil,
|
38
|
+
:override_only_path => false
|
39
|
+
}
|
40
|
+
|
41
|
+
def initialize
|
42
|
+
@@defaults.each_pair do |k, v|
|
43
|
+
self.send("#{k}=", v)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def tld_size=(size)
|
48
|
+
tld_sizes[Rails.env.to_sym] = size
|
49
|
+
end
|
50
|
+
|
51
|
+
def tld_size
|
52
|
+
tld_sizes[Rails.env.to_sym]
|
53
|
+
end
|
34
54
|
end
|
35
55
|
|
36
56
|
# Is the current subdomain either nil or not a mirror?
|
37
57
|
def self.has_subdomain?(subdomain)
|
38
|
-
subdomain != false && !subdomain.blank? && !SubdomainFu.mirrors.include?(subdomain)
|
58
|
+
subdomain != false && !subdomain.blank? && !SubdomainFu.config.mirrors.include?(subdomain)
|
39
59
|
end
|
40
60
|
|
41
61
|
def self.is_mirror?(subdomain)
|
42
|
-
subdomain != false && !subdomain.blank? && SubdomainFu.mirrors.include?(subdomain)
|
62
|
+
subdomain != false && !subdomain.blank? && SubdomainFu.config.mirrors.include?(subdomain)
|
43
63
|
end
|
44
64
|
|
45
65
|
# Is the subdomain a preferred mirror
|
46
66
|
def self.preferred_mirror?(subdomain)
|
47
|
-
subdomain == SubdomainFu.preferred_mirror || SubdomainFu.preferred_mirror.nil?
|
67
|
+
subdomain == SubdomainFu.config.preferred_mirror || SubdomainFu.config.preferred_mirror.nil?
|
48
68
|
end
|
49
69
|
|
50
70
|
# Gets the subdomain from the host based on the TLD size
|
51
71
|
def self.subdomain_from(host)
|
52
72
|
return nil if host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host)
|
53
73
|
parts = host.split('.')
|
54
|
-
sub = parts[0..-(SubdomainFu.tld_size+2)].join(".")
|
74
|
+
sub = parts[0..-(SubdomainFu.config.tld_size+2)].join(".")
|
55
75
|
sub.blank? ? nil : sub
|
56
76
|
end
|
57
77
|
|
@@ -63,19 +83,19 @@ module SubdomainFu
|
|
63
83
|
|
64
84
|
def self.host_without_subdomain(host)
|
65
85
|
parts = host.split('.')
|
66
|
-
parts[-(SubdomainFu.tld_size+1)..-1].join(".")
|
86
|
+
parts[-(SubdomainFu.config.tld_size+1)..-1].join(".")
|
67
87
|
end
|
68
88
|
|
69
89
|
# Rewrites the subdomain of the host unless they are equivalent (i.e. mirrors of each other)
|
70
90
|
def self.rewrite_host_for_subdomains(subdomain, host)
|
71
91
|
if needs_rewrite?(subdomain, host)
|
72
|
-
change_subdomain_of_host(subdomain || SubdomainFu.preferred_mirror, host)
|
92
|
+
change_subdomain_of_host(subdomain || SubdomainFu.config.preferred_mirror, host)
|
73
93
|
else
|
74
94
|
if has_subdomain?(subdomain) || preferred_mirror?(subdomain_from(host)) ||
|
75
95
|
(subdomain.nil? && has_subdomain?(subdomain_from(host)))
|
76
96
|
host
|
77
97
|
else
|
78
|
-
change_subdomain_of_host(SubdomainFu.preferred_mirror, host)
|
98
|
+
change_subdomain_of_host(SubdomainFu.config.preferred_mirror, host)
|
79
99
|
end
|
80
100
|
end
|
81
101
|
end
|
@@ -95,14 +115,14 @@ module SubdomainFu
|
|
95
115
|
end
|
96
116
|
|
97
117
|
def self.override_only_path?
|
98
|
-
|
118
|
+
config.override_only_path
|
99
119
|
end
|
100
120
|
|
101
121
|
def self.needs_rewrite?(subdomain, host)
|
102
122
|
case subdomain
|
103
123
|
when nil
|
104
124
|
#rewrite when there is a preferred mirror set and there is no subdomain on the host
|
105
|
-
return true if
|
125
|
+
return true if config.preferred_mirror && subdomain_from(host).nil?
|
106
126
|
return false
|
107
127
|
when false
|
108
128
|
h = subdomain_from(host)
|
@@ -111,7 +131,7 @@ module SubdomainFu
|
|
111
131
|
#rewrite when there is a subdomain in the host, and it is not a preferred mirror
|
112
132
|
return true if !preferred_mirror?(h)
|
113
133
|
#rewrite when there is a preferred mirror set and the subdomain of the host is not a mirror
|
114
|
-
return true if
|
134
|
+
return true if config.preferred_mirror && !is_mirror?(h)
|
115
135
|
#no rewrite if host already has mirror subdomain
|
116
136
|
#it { SubdomainFu.needs_rewrite?(false,"www.localhost").should be_false }
|
117
137
|
return false if is_mirror?(h)
|
@@ -129,7 +149,7 @@ module SubdomainFu
|
|
129
149
|
end
|
130
150
|
|
131
151
|
def self.current_subdomain(request)
|
132
|
-
subdomain = request.subdomains(SubdomainFu.tld_size).join(".")
|
152
|
+
subdomain = request.subdomains(SubdomainFu.config.tld_size).join(".")
|
133
153
|
if has_subdomain?(subdomain)
|
134
154
|
subdomain
|
135
155
|
else
|
@@ -1,48 +1,33 @@
|
|
1
|
+
require 'action_controller/metal/url_for'
|
2
|
+
require 'action_controller/url_rewriter'
|
3
|
+
|
1
4
|
module ActionController
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
5
|
+
# module UrlFor
|
6
|
+
# def url_for_with_subdomains(options)
|
7
|
+
# if SubdomainFu.needs_rewrite?(options[:subdomain], options[:host] || default_url_options[:host]) || options[:only_path] == false
|
8
|
+
# options[:only_path] = false if SubdomainFu.override_only_path?
|
9
|
+
# options[:host] = SubdomainFu.rewrite_host_for_subdomains(options.delete(:subdomain), options[:host] || default_url_options[:host])
|
10
|
+
# else
|
11
|
+
# options.delete(:subdomain)
|
12
|
+
# end
|
13
|
+
# url_for_without_subdomains(options)
|
14
|
+
# end
|
15
|
+
# alias_method_chain :url_for, :subdomains
|
16
|
+
# end
|
14
17
|
|
15
18
|
class UrlRewriter #:nodoc:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
options.delete(:subdomain)
|
25
|
-
end
|
26
|
-
rewrite_url_without_subdomains(options)
|
27
|
-
end
|
28
|
-
alias_method_chain :rewrite_url, :subdomains
|
29
|
-
end
|
30
|
-
|
31
|
-
if Rails::VERSION::MAJOR >= 2 and Rails::VERSION::MINOR <= 1
|
32
|
-
# hack for http://www.portallabs.com/blog/2008/10/22/fixing-subdomain_fu-with-named-routes/
|
33
|
-
module Routing
|
34
|
-
module Optimisation
|
35
|
-
class PositionalArgumentsWithAdditionalParams
|
36
|
-
def guard_condition_with_subdomains
|
37
|
-
# don't allow optimisation if a subdomain is present - fixes a problem
|
38
|
-
# with the subdomain appearing in the query instead of being rewritten
|
39
|
-
# see http://mbleigh.lighthouseapp.com/projects/13148/tickets/8-improper-generated-urls-with-named-routes-for-a-singular-resource
|
40
|
-
guard_condition_without_subdomains + " && !args.last.has_key?(:subdomain)"
|
41
|
-
end
|
42
|
-
|
43
|
-
alias_method_chain :guard_condition, :subdomains
|
19
|
+
class << self
|
20
|
+
def rewrite_with_subdomains(options, path_segments=nil)
|
21
|
+
if SubdomainFu.needs_rewrite?(options[:subdomain], (options[:host] || @request.host_with_port)) || options[:only_path] == false
|
22
|
+
options[:only_path] = false if SubdomainFu.override_only_path?
|
23
|
+
options[:host] = SubdomainFu.rewrite_host_for_subdomains(options.delete(:subdomain), options[:host] || @request.host_with_port)
|
24
|
+
# puts "options[:host]: #{options[:host].inspect}"
|
25
|
+
else
|
26
|
+
options.delete(:subdomain)
|
44
27
|
end
|
28
|
+
rewrite_without_subdomains(options, path_segments)
|
45
29
|
end
|
30
|
+
alias_method_chain :rewrite, :subdomains
|
46
31
|
end
|
47
32
|
end
|
48
33
|
end
|
data/rails/init.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
+
require 'action_controller/base'
|
2
|
+
|
1
3
|
#Allow whatever Ruby Package tool is being used ot manage load paths. gem auto adds the gem's lib dir to load path.
|
2
4
|
require 'subdomain-fu' unless defined?(SubdomainFu)
|
3
5
|
|
4
|
-
ActionController::Base.send :include, SubdomainFu::Controller
|
5
|
-
|
6
|
-
RAILS_DEFAULT_LOGGER.info("** SubdomainFu: initialized properly")
|
6
|
+
ActionController::Base.send :include, SubdomainFu::Controller
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
begin
|
2
2
|
require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
|
3
|
-
rescue LoadError
|
4
|
-
puts "You need to install
|
5
|
-
exit
|
3
|
+
#rescue LoadError
|
4
|
+
# puts "You need to install RSpec in your base app. Add 'rspec-rails' to your Gemfile."
|
5
|
+
# exit
|
6
6
|
end
|
7
7
|
|
8
8
|
plugin_spec_dir = File.dirname(__FILE__)
|
9
9
|
ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log")
|
10
10
|
|
11
|
-
|
11
|
+
Rails3::Application.routes.draw do |map|
|
12
12
|
map.needs_subdomain '/needs_subdomain', :controller => "fu", :action => "awesome"
|
13
13
|
map.no_subdomain '/no_subdomain', :controller => "fu", :action => "lame"
|
14
14
|
map.needs_awesome '/needs_awesome', :controller => "fu", :action => "lame"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: subdomain-fu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bleigh
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-09 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -28,7 +28,6 @@ files:
|
|
28
28
|
- Rakefile
|
29
29
|
- VERSION.yml
|
30
30
|
- lib/subdomain-fu.rb
|
31
|
-
- lib/subdomain_fu/routing_extensions.rb
|
32
31
|
- lib/subdomain_fu/url_rewriter.rb
|
33
32
|
- rails/init.rb
|
34
33
|
- spec/spec.opts
|
@@ -52,9 +51,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
52
51
|
version:
|
53
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
53
|
requirements:
|
55
|
-
- - "
|
54
|
+
- - ">"
|
56
55
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
56
|
+
version: 1.3.1
|
58
57
|
version:
|
59
58
|
requirements: []
|
60
59
|
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# Thanks to Jamis Buck for ideas on this stuff
|
2
|
-
# http://weblog.jamisbuck.org/2006/10/26/monkey-patching-rails-extending-routes-2
|
3
|
-
# This is not yet a working part of SubdomainFu.
|
4
|
-
|
5
|
-
module SubdomainFu
|
6
|
-
module RouteExtensions
|
7
|
-
def self.included(base)
|
8
|
-
base.alias_method_chain :recognition_conditions, :subdomain
|
9
|
-
end
|
10
|
-
|
11
|
-
def recognition_conditions_with_subdomain
|
12
|
-
result = recognition_conditions_without_subdomain
|
13
|
-
result << "conditions[:subdomain] === env[:subdomain]" if conditions[:subdomain] && conditions[:subdomain] != true && conditions[:subdomain] != false
|
14
|
-
result << "SubdomainFu.has_subdomain?(env[:subdomain])" if conditions[:subdomain] == true
|
15
|
-
result << "!SubdomainFu.has_subdomain?(env[:subdomain])" if conditions[:subdomain] == false
|
16
|
-
result
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module RouteSetExtensions
|
21
|
-
def self.included(base)
|
22
|
-
base.alias_method_chain :extract_request_environment, :subdomain
|
23
|
-
end
|
24
|
-
|
25
|
-
def extract_request_environment_with_subdomain(request)
|
26
|
-
env = extract_request_environment_without_subdomain(request)
|
27
|
-
env.merge(:host => request.host, :domain => request.domain, :subdomain => SubdomainFu.current_subdomain(request))
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
module MapperExtensions
|
32
|
-
def quick_map(has_unless, *args, &block)
|
33
|
-
options = args.find{|a| a.is_a?(Hash)}
|
34
|
-
namespace_str = options ? options.delete(:namespace).to_s : args.join('_or_')
|
35
|
-
namespace_str += '_' unless namespace_str.blank?
|
36
|
-
mapped_exp = args.map(&:to_s).join('|')
|
37
|
-
conditions_hash = { :subdomain => ( has_unless ? /[^(#{mapped_exp})]/ : /(#{mapped_exp})/) }
|
38
|
-
with_options(:conditions => conditions_hash, :name_prefix => namespace_str, &block)
|
39
|
-
end
|
40
|
-
# Adds methods to Mapper to apply an options with a method. Example
|
41
|
-
# map.subdomain :blog { |blog| blog.resources :pages }
|
42
|
-
# or
|
43
|
-
# map.unless_subdomain :blog { |not_blog| not_blog.resources :people }
|
44
|
-
def subdomain(*args, &block)
|
45
|
-
quick_map(false, *args, &block)
|
46
|
-
end
|
47
|
-
def unless_subdomain(*args, &block)
|
48
|
-
quick_map(true, *args, &block)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
ActionController::Routing::RouteSet::Mapper.send :include, SubdomainFu::MapperExtensions
|
54
|
-
ActionController::Routing::RouteSet.send :include, SubdomainFu::RouteSetExtensions
|
55
|
-
ActionController::Routing::Route.send :include, SubdomainFu::RouteExtensions
|
56
|
-
|
57
|
-
# UrlRewriter::RESERVED_OPTIONS is only available in Rails >= 2.2
|
58
|
-
# http://www.portallabs.com/blog/2008/12/02/fixing-subdomain_fu-with-named-routes-rails-22/
|
59
|
-
if Rails::VERSION::MAJOR >= 2 and Rails::VERSION::MINOR >= 2
|
60
|
-
ActionController::UrlRewriter::RESERVED_OPTIONS << :subdomain
|
61
|
-
end
|