Giter Site home page Giter Site logo

socialwhirled123 / subdomain-fu Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nhowell/subdomain-fu

0.0 17.0 0.0 143 KB

A new plugin approach to attempting to solve the usage of subdomains in linking and routing in Rails projects.

Home Page: http://rdoc.info/projects/mbleigh/subdomain-fu

License: Other

subdomain-fu's Introduction

SubdomainFu

SubdomainFu provides a modern implementation of subdomain handling in Rails. 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:

script/plugin install git://github.com/intridea/subdomain-fu.git

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'

Examples

SubdomainFu works inside of Rails’s URL Writing mechanisms to provide an easy and seamless way to link and otherwise understand cross-subdomain routing. You can use the :subdomain option both in named and non-named routes as well as in generated resources routes.

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

Now let’s say I’m at 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

Note that this plugin does not honor the :only_path notion of routing when doing so would go against the intent of the command. For example, if I were at intridea.com again:

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.

Use in controllers and views

You have access to current_subdomain and current_domain methods.

current_subdomain

returns all subdomains. For the URL awesome.website.stuff.example.com, it will return “awesome.website.stuff”

current_domain

returns the domain excluding for the subdomain, including the TLD. For the URL awesome.website.stuff.example.com, it will return “website.stuff.example.com”

If what you really want is the entire domain, then use request.domain 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. To configure SubdomainFu simply call a block in an initializer like so:

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.)

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 are the subdomains that are equivalent to no subdomain (i.e. they ‘mirror’) the usage of the root domain.

config.mirrors = %w(www site we) # Defaults to %w(www)

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:

config.preferred_mirror = "www"

Now when you create a link with :subdomain => false in the options the subdomain will default to the preferred mirror.

Routing (Deprecated)

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: yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/

Resources

Copyright © 2008-2010 Michael Bleigh (www.mbleigh.com/) and Intridea, Inc. (www.intridea.com/). Released under the MIT license

subdomain-fu's People

Contributors

pboling avatar eric avatar jcoby avatar nhowell avatar morhekil avatar zachhale avatar ajn avatar etaque avatar technicalpickles avatar loe avatar

Watchers

Ignacio Ochoa avatar Bob Roberts avatar Normando Vazquez avatar Abel Sierra avatar James Cloos avatar Stephen Tong avatar Garth Gaughan avatar  avatar Thomas Cho  avatar Joshua Schlag avatar Socialwhirled avatar Vincent Serpico avatar  avatar Benjamin Largent avatar leonardo avatar  avatar Jared Dubina avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.