subdomain-fu 0.4.1 → 0.5.3
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/CHANGELOG +7 -0
- data/README.rdoc +19 -1
- data/Rakefile +27 -0
- data/VERSION.yml +2 -2
- data/lib/subdomain-fu.rb +11 -0
- data/rails/init.rb +1 -3
- data/spec/subdomain_fu_spec.rb +27 -0
- metadata +2 -2
data/CHANGELOG
CHANGED
data/README.rdoc
CHANGED
@@ -45,6 +45,20 @@ users_path(:subdomain => false) # => /users
|
|
45
45
|
In this way you can rest assured that you will never misdirect your links to the
|
46
46
|
same subdomain when you meant to change it.
|
47
47
|
|
48
|
+
== Use in controllers and views
|
49
|
+
|
50
|
+
You have access to current_subdomain and current_domain methods.
|
51
|
+
|
52
|
+
current_subdomain - returns all subdomains.
|
53
|
+
Example for the URL http://awesome.website.stuff.example.com current_subdomain will return "awesome.website.stuff"
|
54
|
+
|
55
|
+
current_domain - returns all subdomains except for the subdomain, including the TLD.
|
56
|
+
Example for the URL http://awesome.website.stuff.example.com current_subdomain will return "website.stuff.example.com"
|
57
|
+
|
58
|
+
If what you really want is the entire domain, then use <tt>request.domain</tt> in
|
59
|
+
your controllers. The purpose of current_domain is to only strip off the first
|
60
|
+
subdomain, if any, and return what's left.
|
61
|
+
|
48
62
|
== Configuration
|
49
63
|
|
50
64
|
You may need to configure SubdomainFu based on your development setup. The
|
@@ -82,10 +96,14 @@ will default to the preferred mirror.
|
|
82
96
|
|
83
97
|
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:
|
84
98
|
|
85
|
-
map.with_options :conditions => {:subdomain => 'admin} do |admin|
|
99
|
+
map.with_options :conditions => {:subdomain => 'admin'} do |admin|
|
86
100
|
admin.resources :posts
|
87
101
|
admin.resources :users
|
88
102
|
end
|
103
|
+
|
104
|
+
In addition to specifying a string, you could also specify <tt>false</tt> to
|
105
|
+
require no subdomain (this includes mirrors that you've set up such as www)
|
106
|
+
or a regular expression to match a range of subdomains.
|
89
107
|
|
90
108
|
== Resources
|
91
109
|
|
data/Rakefile
CHANGED
@@ -26,3 +26,30 @@ rescue LoadError
|
|
26
26
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
27
27
|
end
|
28
28
|
|
29
|
+
|
30
|
+
# These are new tasks
|
31
|
+
begin
|
32
|
+
require 'rake/contrib/sshpublisher'
|
33
|
+
namespace :rubyforge do
|
34
|
+
|
35
|
+
desc "Release gem and RDoc documentation to RubyForge"
|
36
|
+
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
37
|
+
|
38
|
+
namespace :release do
|
39
|
+
desc "Publish RDoc to RubyForge."
|
40
|
+
task :docs => [:rdoc] do
|
41
|
+
config = YAML.load(
|
42
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
43
|
+
)
|
44
|
+
|
45
|
+
host = "#{config['username']}@rubyforge.org"
|
46
|
+
remote_dir = "/var/www/gforge-projects/the-perfect-gem/"
|
47
|
+
local_dir = 'rdoc'
|
48
|
+
|
49
|
+
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
rescue LoadError
|
54
|
+
puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
|
55
|
+
end
|
data/VERSION.yml
CHANGED
data/lib/subdomain-fu.rb
CHANGED
@@ -137,14 +137,25 @@ module SubdomainFu
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
+
#Enables subdomain-fu to more completely replace DHH's account_location plugin
|
141
|
+
def self.current_domain(request)
|
142
|
+
domain = ""
|
143
|
+
domain << request.subdomains[1..-1].join(".") + "." if request.subdomains.length > 1
|
144
|
+
domain << request.domain + request.port_string
|
145
|
+
end
|
146
|
+
|
140
147
|
module Controller
|
141
148
|
def self.included(controller)
|
142
149
|
controller.helper_method(:current_subdomain)
|
150
|
+
controller.helper_method(:current_domain)
|
143
151
|
end
|
144
152
|
|
145
153
|
protected
|
146
154
|
def current_subdomain
|
147
155
|
SubdomainFu.current_subdomain(request)
|
148
156
|
end
|
157
|
+
def current_domain
|
158
|
+
SubdomainFu.current_domain(request)
|
159
|
+
end
|
149
160
|
end
|
150
161
|
end
|
data/rails/init.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
#
|
2
|
-
$:.unshift "#{File.dirname(__FILE__)}/../lib"
|
3
|
-
|
1
|
+
#Allow whatever Ruby Package tool is being used ot manage load paths. gem auto adds the gem's lib dir to load path.
|
4
2
|
require 'subdomain-fu' unless defined?(SubdomainFu)
|
5
3
|
|
6
4
|
ActionController::Base.send :include, SubdomainFu::Controller
|
data/spec/subdomain_fu_spec.rb
CHANGED
@@ -159,6 +159,33 @@ describe "SubdomainFu" do
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
162
|
+
describe "#current_domain" do
|
163
|
+
it "should return the current domain if there is one" do
|
164
|
+
request = mock("request", :subdomains => [], :domain => "example.com", :port_string => "")
|
165
|
+
SubdomainFu.current_domain(request).should == "example.com"
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should return empty string if there is no domain" do
|
169
|
+
request = mock("request", :subdomains => [], :domain => "", :port_string => "")
|
170
|
+
SubdomainFu.current_domain(request).should == ""
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should return the current domain if there is only one level of subdomains" do
|
174
|
+
request = mock("request", :subdomains => ["www"], :domain => "example.com", :port_string => "")
|
175
|
+
SubdomainFu.current_domain(request).should == "example.com"
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should return everything but the first level of subdomain when there are multiple levels of subdomains" do
|
179
|
+
request = mock("request", :subdomains => ["awesome","rad","cheese","chevy","ford"], :domain => "example.com", :port_string => "")
|
180
|
+
SubdomainFu.current_domain(request).should == "rad.cheese.chevy.ford.example.com"
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should return the domain with port if port is given" do
|
184
|
+
request = mock("request", :subdomains => ["awesome","rad","cheese","chevy","ford"], :domain => "example.com", :port_string => ":3000")
|
185
|
+
SubdomainFu.current_domain(request).should == "rad.cheese.chevy.ford.example.com:3000"
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
162
189
|
describe "#same_subdomain?" do
|
163
190
|
it { SubdomainFu.same_subdomain?("www","www.localhost").should be_true }
|
164
191
|
it { SubdomainFu.same_subdomain?("www","localhost").should be_true }
|
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: 0.5.3
|
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: 2009-
|
12
|
+
date: 2009-09-13 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|