too_short 0.1.1 → 0.1.2
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 +7 -11
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/ar_base_extensions.rb +10 -0
- data/lib/controller_methods.rb +14 -3
- data/too_short.gemspec +4 -4
- metadata +6 -6
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
==TooShort
|
2
2
|
|
3
|
-
TooShort
|
3
|
+
TooShort allows you to create persistent short URLs for your resources. And it works without any additional storage.
|
4
4
|
|
5
5
|
----
|
6
6
|
|
@@ -33,19 +33,14 @@ In your models:
|
|
33
33
|
has_as_short_url :scope => 'b'
|
34
34
|
end
|
35
35
|
|
36
|
-
@foo.short_url # => http://2sh.de
|
37
|
-
@bar.short_url # => http://2sh.de
|
36
|
+
@foo.short_url # => http://2sh.de/f/2n9c
|
37
|
+
@bar.short_url # => http://2sh.de/b/2n9c
|
38
38
|
|
39
39
|
---
|
40
40
|
|
41
41
|
==Expanding a short URL
|
42
42
|
|
43
43
|
Add routes:
|
44
|
-
(Rails 2)
|
45
|
-
map.connect '/:scope/:hash', :controller => :short_urls, :action => :expand # for multiple resources
|
46
|
-
map.connect '/:hash', :controller => :short_urls, :action => :expand # for a single resource
|
47
|
-
|
48
|
-
(Rails 3)
|
49
44
|
get '/:scope/:hash' => 'short_urls#expand' # for multiple resources
|
50
45
|
get '/:hash' => 'short_urls#expand' # for a single resource
|
51
46
|
|
@@ -67,7 +62,7 @@ This can be overwritten by overwriting two methods
|
|
67
62
|
respond_to_invalid_short_url
|
68
63
|
|
69
64
|
The object that was looked up for the given short URL is stored in
|
70
|
-
@
|
65
|
+
@object_from_short_url
|
71
66
|
|
72
67
|
---
|
73
68
|
|
@@ -75,12 +70,13 @@ The object that was looked up for the given short URL is stored in
|
|
75
70
|
|
76
71
|
@post = Post.create
|
77
72
|
@post.id # => 123456
|
78
|
-
post.short_url # => http://2sh.de
|
73
|
+
post.short_url # => http://2sh.de/2n9c
|
79
74
|
123456.to_i(36) # => "2n9c"
|
80
75
|
"2n9c".to_s(36) # => 123456
|
81
76
|
|
82
|
-
<em>I borrowed this from http://blog.saush.com/2009/04/13/clone-tinyurl-in-40-lines-of-ruby-code
|
77
|
+
<em>I borrowed this from http://blog.saush.com/2009/04/13/clone-tinyurl-in-40-lines-of-ruby-code/</em>
|
83
78
|
|
79
|
+
I go into more detail on the inner workings of TooShort here: http://sens3.com/posts/tooshort-rubygem
|
84
80
|
|
85
81
|
== Contributing to too_short
|
86
82
|
|
data/Rakefile
CHANGED
@@ -15,8 +15,8 @@ Jeweler::Tasks.new do |gem|
|
|
15
15
|
gem.name = "too_short"
|
16
16
|
gem.homepage = "http://github.com/sens3/too_short"
|
17
17
|
gem.license = "MIT"
|
18
|
-
gem.summary = %Q{A
|
19
|
-
gem.description = %Q{
|
18
|
+
gem.summary = %Q{A URL shortener for your resources}
|
19
|
+
gem.description = %Q{TooShort allows you to create persistent short URLs for your resources, without any additional storage.}
|
20
20
|
gem.email = "makesens3@gmail.com"
|
21
21
|
gem.authors = ["Simon Baumgartner"]
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/ar_base_extensions.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
module TooShort
|
2
2
|
module ARBaseExtensions
|
3
3
|
|
4
|
+
|
5
|
+
# To be included in your model, i.e
|
6
|
+
# class Post
|
7
|
+
# has_a_short_url
|
8
|
+
# end
|
9
|
+
#
|
10
|
+
# Takes the following options:
|
11
|
+
# host: short URL host to use (alternatively to be defined in an initializer file)
|
12
|
+
# scope: the scope for this model, necessary when short URLs are used in multiple models
|
13
|
+
#
|
4
14
|
def has_a_short_url(options={})
|
5
15
|
short_url_options = TooShort.options.merge(options)
|
6
16
|
short_url_options.symbolize_keys!
|
data/lib/controller_methods.rb
CHANGED
@@ -1,16 +1,27 @@
|
|
1
1
|
module TooShort
|
2
|
+
|
3
|
+
# To be included in the controller that should handle short URLs, i.e
|
4
|
+
# class ShortUrlsController < ApplicationController
|
5
|
+
# include TooShort::ControllerMethods
|
6
|
+
# end
|
7
|
+
#
|
8
|
+
# response handling can be customized by overwriting these methods
|
9
|
+
# respond_to_valid_short_url
|
10
|
+
# respond_to_invalid_short_url
|
11
|
+
#
|
12
|
+
# the object that was looked up can be accessed via @object_from_short_url
|
2
13
|
module ControllerMethods
|
3
14
|
def expand
|
4
15
|
require_all_model_classes
|
5
|
-
if @
|
16
|
+
if @object_from_short_url = TooShort.expand_to_object(params[:scope], params[:hash])
|
6
17
|
respond_to_valid_short_url
|
7
18
|
else
|
8
19
|
respond_to_invalid_short_url
|
9
20
|
end
|
10
21
|
end
|
11
|
-
|
22
|
+
|
12
23
|
def respond_to_valid_short_url
|
13
|
-
redirect_to @
|
24
|
+
redirect_to @object_from_short_url
|
14
25
|
end
|
15
26
|
|
16
27
|
def respond_to_invalid_short_url
|
data/too_short.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{too_short}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Simon Baumgartner"]
|
12
|
-
s.date = %q{2011-01-
|
13
|
-
s.description = %q{
|
12
|
+
s.date = %q{2011-01-31}
|
13
|
+
s.description = %q{TooShort allows you to create persistent short URLs for your resources, without any additional storage.}
|
14
14
|
s.email = %q{makesens3@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
@@ -37,7 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
s.licenses = ["MIT"]
|
38
38
|
s.require_paths = ["lib"]
|
39
39
|
s.rubygems_version = %q{1.3.7}
|
40
|
-
s.summary = %q{A
|
40
|
+
s.summary = %q{A URL shortener for your resources}
|
41
41
|
s.test_files = [
|
42
42
|
"spec/ar_base_extensions_spec.rb",
|
43
43
|
"spec/controller_methods_spec.rb",
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: too_short
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Simon Baumgartner
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01-
|
18
|
+
date: 2011-01-31 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
- 0
|
113
113
|
version: "0"
|
114
114
|
requirement: *id006
|
115
|
-
description:
|
115
|
+
description: TooShort allows you to create persistent short URLs for your resources, without any additional storage.
|
116
116
|
email: makesens3@gmail.com
|
117
117
|
executables: []
|
118
118
|
|
@@ -170,7 +170,7 @@ rubyforge_project:
|
|
170
170
|
rubygems_version: 1.3.7
|
171
171
|
signing_key:
|
172
172
|
specification_version: 3
|
173
|
-
summary: A
|
173
|
+
summary: A URL shortener for your resources
|
174
174
|
test_files:
|
175
175
|
- spec/ar_base_extensions_spec.rb
|
176
176
|
- spec/controller_methods_spec.rb
|