-
Notifications
You must be signed in to change notification settings - Fork 118
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
214 additions
and
224 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,17 +5,20 @@ It takes aspects from account_location, request_routing, and other snippets | |
found around the web and combines them to provide a single, simple solution | ||
for subdomain-based route and url management. | ||
|
||
**Note**: SubdomainFu has been rewritten to be compatible with Rails 3. If | ||
you are looking to use it on Rails 2.x, please install version v0.5.x instead. | ||
|
||
== Installation | ||
|
||
SubdomainFu is available both as a traditional plugin and a GemPlugin. To | ||
install it as a traditional plugin (Rails 2.1 or later): | ||
install it as a traditional plugin: | ||
|
||
script/plugin install git://github.com/mbleigh/subdomain-fu.git | ||
script/plugin install git://github.com/intridea/subdomain-fu.git | ||
|
||
To use it as a GemPlugin, add it to your environment.rb: | ||
|
||
config.gem 'mbleigh-subdomain-fu', :source => "http://gems.github.com", :lib => "subdomain-fu" | ||
To use it as a gem, add it to your Gemfile. Until Rails 3 is officially released, | ||
the Rails 3 version of the plugin is only available as a prerelease gem: | ||
|
||
gem 'subdomain-fu', '1.0.0.beta2' | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
pboling
Author
Collaborator
|
||
|
||
== Examples | ||
|
||
|
@@ -26,14 +29,14 @@ option both in named and non-named routes as well as in generated resources rout | |
Let's say my domain is 'intridea.com'. Here are some examples of the use of the :subdomain | ||
option: | ||
|
||
url_for(:controller => "my_controller", | ||
:action => "my_action", | ||
:subdomain => "awesome") # => http://awesome.intridea.com/my_controller/my_action | ||
url_for(:controller => "my_controller", | ||
:action => "my_action", | ||
:subdomain => "awesome") # => http://awesome.intridea.com/my_controller/my_action | ||
|
||
Now let's say I'm at http://awesome.intridea.com/ and I want back to the root. | ||
Specifying "false" will remove any current subdomain: | ||
|
||
users_url(:subdomain => false) # => http://intridea.com/users | ||
users_url(:subdomain => false) # => http://intridea.com/users | ||
|
||
You should exercise caution using the :only_path option when you want to change | ||
subdomains. If you want the plugin to ensure that you switch subdomains when | ||
|
@@ -42,9 +45,9 @@ application configuration. This will disregard :only_path in routing helpers. | |
With this option, if I were at http://intridea.com | ||
again: | ||
|
||
users_path(:subdomain => "fun") # => http://fun.intridea.com/users | ||
users_path(:subdomain => false) # => /users | ||
|
||
users_path(:subdomain => "fun") # => http://fun.intridea.com/users | ||
users_path(:subdomain => false) # => /users | ||
In this way you can rest assured that you will never misdirect your links to the | ||
same subdomain when you meant to change it. | ||
|
||
|
@@ -56,66 +59,63 @@ and so may constitute a change for you when upgrading to the latest and greatest | |
|
||
You have access to current_subdomain and current_domain methods. | ||
|
||
current_subdomain - returns all subdomains. | ||
http://awesome.website.stuff.example.com => "awesome.website.stuff" | ||
[current_subdomain] returns all subdomains. For the URL http://awesome.website.stuff.example.com, it will return "awesome.website.stuff" | ||
|
||
current_domain - returns all domains, except for the first subdomain and the TLD. | ||
Example for the URL http://awesome.website.stuff.example.com current_subdomain will return "website.stuff.example.com" | ||
[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" | ||
|
||
If what you really want is the entire domain, then use <tt>request.domain</tt> in | ||
your controllers. The purpose of current_domain is to only strip off the first | ||
subdomain, if any, and return what's left. | ||
|
||
== Configuration | ||
|
||
You may need to configure SubdomainFu based on your development setup. The | ||
configuration required is: | ||
You may need to configure SubdomainFu based on your development setup. To configure | ||
SubdomainFu simply call a block in an initializer like so: | ||
|
||
=== TLD Size | ||
SubdomainFu.configure do |config| | ||
config.option_name = value | ||
end | ||
|
||
Some available options are enumerated below. | ||
|
||
=== tld_size | ||
|
||
A hash for each environment of the size of the top-level domain name. | ||
(something.com = 1, localhost = 0, etc.) | ||
|
||
SubdomainFu.tld_size = 1 # sets for current environment | ||
SubdomainFu.tld_sizes = {:development => 0, | ||
:test => 0, | ||
:production => 1} # set all at once (also the defaults) | ||
config.tld_size = 1 # sets for current environment | ||
config.tld_sizes = {:development => 0, | ||
:test => 0, | ||
:production => 1} # set all at once (also the defaults) | ||
|
||
=== Mirrors | ||
=== mirrors | ||
|
||
Mirrors are the subdomains that are equivalent to no subdomain (i.e. they 'mirror') | ||
the usage of the root domain. | ||
|
||
SubdomainFu.mirrors = %w(www site we) # Defaults to %w(www) | ||
config.mirrors = %w(www site we) # Defaults to %w(www) | ||
|
||
=== Preferred Mirror | ||
=== preferred_mirror | ||
|
||
SubdomainFu also understands the notion of a 'preferred mirror', that is, if you | ||
always want your links going to 'www.yourdomain.com' instead of 'yourdomain.com', | ||
you can set the preferred mirror like so: | ||
|
||
SubdomainFu.preferred_mirror = "www" | ||
config.preferred_mirror = "www" | ||
|
||
Now when you create a link with subdomain => false in the options the subdomain | ||
Now when you create a link with <tt>:subdomain => false</tt> in the options the subdomain | ||
will default to the preferred mirror. | ||
|
||
== Routing | ||
== Routing (Deprecated) | ||
|
||
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 routes.rb file: | ||
|
||
map.with_options :conditions => {:subdomain => 'admin'} do |admin| | ||
admin.resources :posts | ||
admin.resources :users | ||
end | ||
|
||
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. | ||
Subdomain constraint routing has been removed from the scope of this plugin as Rails 3 | ||
provides the functionality by default. For more info, see this blog post: | ||
http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/ | ||
|
||
== Resources | ||
|
||
* GitHub Repository: http://github.com/mbleigh/subdomain-fu | ||
* RDocs: http://rdoc.info/projects/mbleigh/subdomain-fu | ||
* GitHub Repository: http://github.com/intridea/subdomain-fu | ||
* RDocs: http://rdoc.info/projects/intridea/subdomain-fu | ||
|
||
Copyright (c) 2008 Michael Bleigh (http://www.mbleigh.com/) and | ||
Copyright (c) 2008-2010 Michael Bleigh (http://www.mbleigh.com/) and | ||
Intridea, Inc. (http://www.intridea.com/). Released under the MIT license |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
--- | ||
:minor: 6 | ||
:patch: 1 | ||
:major: 0 | ||
:major: 1 | ||
:build: beta2 | ||
:minor: 0 | ||
:patch: 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# SQLite version 3.x | ||
# gem install sqlite3-ruby (not necessary on OS X Leopard) | ||
development: | ||
adapter: sqlite3 | ||
database: db/development.sqlite3 | ||
pool: 5 | ||
timeout: 5000 | ||
|
||
# Warning: The database defined as "test" will be erased and | ||
# re-generated from your development database when you run "rake". | ||
# Do not set this db to the same as development or production. | ||
test: | ||
adapter: sqlite3 | ||
database: db/test.sqlite3 | ||
pool: 5 | ||
timeout: 5000 | ||
|
||
production: | ||
adapter: sqlite3 | ||
database: db/production.sqlite3 | ||
pool: 5 | ||
timeout: 5000 |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.
Rails 3 was released pretty long ago. Are we still calling this a pre-release gem, or is Subdomain-Fu just dead?