gravtastic 1.5.2 → 1.6.0
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.textile +8 -7
- data/Rakefile +1 -1
- data/lib/gravtastic.rb +17 -5
- data/spec/gravtastic_spec.rb +46 -1
- metadata +3 -3
data/README.textile
CHANGED
@@ -3,14 +3,14 @@ Easily add "Gravatars":http://gravatar.com to your Ruby objects.
|
|
3
3
|
|
4
4
|
h2. Install
|
5
5
|
|
6
|
-
sudo gem install
|
6
|
+
sudo gem install gravtastic
|
7
7
|
|
8
8
|
|
9
9
|
h2. Usage
|
10
10
|
|
11
11
|
Somewhere in your application you need to @require 'gravtastic'@. In Rails >= 2.1 you can forego this and just add a dependency gem dependency for Gravtastic.
|
12
12
|
|
13
|
-
config.gem 'gravtastic'
|
13
|
+
config.gem 'gravtastic'
|
14
14
|
|
15
15
|
The next step is to give your model a Gravatar:
|
16
16
|
|
@@ -36,14 +36,14 @@ Note that it defaults to a PG rating. You can specify extra options with a hash:
|
|
36
36
|
|
37
37
|
current_user.gravatar_url(:secure => true)
|
38
38
|
=> "https://secure.gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=PG"
|
39
|
+
|
40
|
+
However, to DRY things up you can specify defaults in the class declaration.
|
39
41
|
|
40
|
-
|
41
|
-
PPS. Shame on Automattic for still using MD5!
|
42
|
-
|
42
|
+
has_gravatar :author_email, :defaults => { :rating => 'R18', :size => 20 }
|
43
43
|
|
44
|
-
|
44
|
+
Nice, now all the calls to gravatar_url will have the defaults you have specified.
|
45
45
|
|
46
|
-
|
46
|
+
PS. Bonus points for anybody who can tell me what that users email is!
|
47
47
|
|
48
48
|
|
49
49
|
h2. Authors
|
@@ -64,6 +64,7 @@ If you submit a successful patch then you'll be given full commit rights to the
|
|
64
64
|
h2. Thanks
|
65
65
|
|
66
66
|
* "Xavier Shay":http://rhnh.net and others for "Enki":http://enkiblog.com (the reason this was written)
|
67
|
+
* "Matthew Moore":http://www.matthewpaulmoore.com/ for helpful suggestions
|
67
68
|
|
68
69
|
|
69
70
|
h2. License
|
data/Rakefile
CHANGED
data/lib/gravtastic.rb
CHANGED
@@ -57,8 +57,12 @@ module Gravtastic
|
|
57
57
|
#
|
58
58
|
# has_gravatar :on => :author_email
|
59
59
|
#
|
60
|
+
# has_gravatar :defaults => { :rating => 'R18' }
|
61
|
+
#
|
60
62
|
def has_gravatar(options={:on => :email})
|
61
63
|
@gravatar_source = options[:on]
|
64
|
+
options[:defaults] ||= {}
|
65
|
+
@gravatar_defaults = {:rating => 'PG', :secure => false}.merge(options[:defaults])
|
62
66
|
end
|
63
67
|
|
64
68
|
#
|
@@ -70,7 +74,14 @@ module Gravtastic
|
|
70
74
|
def gravatar_source
|
71
75
|
@gravatar_source
|
72
76
|
end
|
73
|
-
|
77
|
+
|
78
|
+
#
|
79
|
+
# Returns a hash of all the default gravtastic options.
|
80
|
+
#
|
81
|
+
def gravatar_defaults
|
82
|
+
@gravatar_defaults
|
83
|
+
end
|
84
|
+
|
74
85
|
#
|
75
86
|
# Returns <tt>true</tt> if the gravatar_source is set. <tt>false</tt> if not. Easy!
|
76
87
|
#
|
@@ -92,7 +103,7 @@ module Gravtastic
|
|
92
103
|
#
|
93
104
|
# Returns a string with the URL for the instance's Gravatar.
|
94
105
|
#
|
95
|
-
# It defaults to <tt>:rating => 'PG'</tt>
|
106
|
+
# It defaults to <tt>:rating => 'PG'</tt> and <tt>:secure => false</tt>
|
96
107
|
#
|
97
108
|
# Examples:
|
98
109
|
#
|
@@ -105,9 +116,10 @@ module Gravtastic
|
|
105
116
|
# current_user.gravatar_url(:secure => true)
|
106
117
|
# => "https://secure.gravatar.com/e9e719b44653a9300e1567f09f6b2e9e.png?r=PG"
|
107
118
|
#
|
108
|
-
def gravatar_url(options={})
|
109
|
-
|
110
|
-
options
|
119
|
+
def gravatar_url(options={})
|
120
|
+
|
121
|
+
options = self.class.gravatar_defaults.merge(options)
|
122
|
+
|
111
123
|
if gravatar_id
|
112
124
|
@gravatar_url = 'http' + (options[:secure] ? 's://secure.' : '://') + 'gravatar.com/avatar/' + gravatar_id + '.png' + parse_url_options_hash(options)
|
113
125
|
end
|
data/spec/gravtastic_spec.rb
CHANGED
@@ -13,27 +13,66 @@ describe "Gravtastic::Model" do
|
|
13
13
|
it "is nil if unset" do
|
14
14
|
@klass.gravatar_source.should be_nil
|
15
15
|
end
|
16
|
+
|
17
|
+
it "returns the value of @gravatar_source" do
|
18
|
+
@klass.instance_variable_set('@gravatar_source', :foo)
|
19
|
+
@klass.gravatar_source.should == :foo
|
20
|
+
end
|
16
21
|
|
17
22
|
end
|
18
23
|
|
24
|
+
describe ".gravatar_defaults" do
|
25
|
+
|
26
|
+
it "it nil if unset" do
|
27
|
+
@klass.gravatar_defaults.should be_nil
|
28
|
+
end
|
29
|
+
|
30
|
+
it "returns the value of @gravatar_defaults" do
|
31
|
+
@klass.instance_variable_set('@gravatar_defaults', :foo)
|
32
|
+
@klass.gravatar_source.should == :foo
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
19
37
|
describe ".has_gravatar" do
|
20
38
|
|
21
|
-
it "sets .gravatar_source to email by default" do
|
39
|
+
it "sets .gravatar_source to :email by default" do
|
22
40
|
@klass.has_gravatar
|
23
41
|
@klass.gravatar_source.should == :email
|
24
42
|
end
|
25
43
|
|
44
|
+
it "sets .gravatar_defaults to { :rating => 'PG', :secure => false } by default" do
|
45
|
+
@klass.has_gravatar
|
46
|
+
@klass.gravatar_defaults.should == { :rating => 'PG', :secure => false }
|
47
|
+
end
|
48
|
+
|
49
|
+
it "keeps either :rating or :secure if only the other is passed as a default" do
|
50
|
+
@klass.has_gravatar :defaults => { :secure => true }
|
51
|
+
@klass.gravatar_defaults.should == { :rating => 'PG', :secure => true }
|
52
|
+
end
|
53
|
+
|
26
54
|
it "changes .gravatar_source" do
|
27
55
|
lambda {
|
28
56
|
@klass.has_gravatar :on => :other_method
|
29
57
|
}.should change(@klass, :gravatar_source)
|
30
58
|
end
|
31
59
|
|
60
|
+
it "changes .gravatar_defaults" do
|
61
|
+
lambda {
|
62
|
+
@klass.has_gravatar :defaults => { :rating => 'R18' }
|
63
|
+
}.should change(@klass, :gravatar_defaults)
|
64
|
+
end
|
65
|
+
|
32
66
|
it "sets .gravatar_source to the value of :on" do
|
33
67
|
@klass.has_gravatar :on => :other_method
|
34
68
|
@klass.gravatar_source.should == :other_method
|
35
69
|
end
|
36
70
|
|
71
|
+
it "sets .gravatar_defaults to the value of :defaults" do
|
72
|
+
@klass.has_gravatar :defaults => { :rating => 'R18'}
|
73
|
+
@klass.gravatar_defaults.should == { :rating => 'R18', :secure => false }
|
74
|
+
end
|
75
|
+
|
37
76
|
end
|
38
77
|
|
39
78
|
describe ".has_gravatar?" do
|
@@ -90,6 +129,7 @@ describe "Gravtastic::Model" do
|
|
90
129
|
@user.stub!(:email).and_return('joe@example.com')
|
91
130
|
@user.stub!(:name).and_return('Joe Bloggs')
|
92
131
|
@user.class.stub!(:gravatar_source).and_return(:email)
|
132
|
+
@user.class.stub!(:gravatar_defaults).and_return({:rating => 'PG'})
|
93
133
|
end
|
94
134
|
|
95
135
|
it "is not nil when .gravatar_source is not nil" do
|
@@ -149,6 +189,11 @@ describe "Gravtastic::Model" do
|
|
149
189
|
@user.gravatar_url(:rating => 'PG').should == @user.gravatar_url
|
150
190
|
end
|
151
191
|
|
192
|
+
it "uses the defaults from .gravatar_defaults" do
|
193
|
+
@user.class.stub!(:gravatar_defaults).and_return({ :size => 20, :rating => 'R18'})
|
194
|
+
@user.gravatar_url.should == valid_gravatar_url + '?r=R18&s=20'
|
195
|
+
end
|
196
|
+
|
152
197
|
def valid_gravatar_url # :nodoc:
|
153
198
|
'http://gravatar.com/avatar/f5b8fb60c6116331da07c65b96a8a1d1.png'
|
154
199
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gravtastic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Lloyd
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-06-
|
12
|
+
date: 2008-06-28 00:00:00 +10:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements: []
|
53
53
|
|
54
54
|
rubyforge_project: gravtastic
|
55
|
-
rubygems_version: 1.
|
55
|
+
rubygems_version: 1.2.0
|
56
56
|
signing_key:
|
57
57
|
specification_version: 2
|
58
58
|
summary: Easily add Gravatars to your Ruby objects.
|