gravatarify 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -4,11 +4,11 @@ Removes any hassles building those pesky gravatar urls, it's not there arent any
4
4
  [there](http://github.com/chrislloyd/gravtastic), but none seem to support stuff like `Proc`s for the default picture url, or
5
5
  the multiple host names supported by gravatar.com (great when displaying lots of avatars).
6
6
 
7
- And it integrates seamlessly with Rails, Merb and even plain old Ruby.
7
+ And it integrates seamlessly with Rails, DataMapper and even plain old Ruby.
8
8
 
9
- - **Source**: [http://github.com/lwe/gravatarify](http://github.com/lwe/gravatarify)
10
- - **Docs**: [http://rdoc.info/projects/lwe/gravatarify](http://rdoc.info/projects/lwe/gravatarify)
11
- - **Gem**: [http://gemcutter.org/gems/gravatarify](http://gemcutter.org/gems/gravatarify)
9
+ - **Source**: <http://github.com/lwe/gravatarify>
10
+ - **Docs**: <http://rdoc.info/projects/lwe/gravatarify>
11
+ - **Gem**: <http://gemcutter.org/gems/gravatarify>
12
12
 
13
13
  ## Install
14
14
 
@@ -31,13 +31,12 @@ and then `require 'gravatarify'` it.
31
31
 
32
32
  This library provides...
33
33
 
34
- * ...object/model helpers, so that an object responds to `gravatar_url`, see [using the model helpers](#l_model_helpers).
34
+ * ...object/model helpers, so that an object responds to `gravatar_url`, see "Using the model helpers"
35
35
  Works also very well with plain old ruby objects.
36
- * ...Rails view helpers, namely `gravatar_url` and `gravatar_tag`, see [using the view helpers](#l_view_helpers). This is rails only though!
36
+ * ...Rails view helpers, namely `gravatar_url` and `gravatar_tag`, see "Using the view helpers". This is rails only though!
37
37
  * ...and finally, a base module which provides the gravatar url generation, ready to be integrated into
38
- custom helpers, plain ruby code or whatever, see [back to the roots](#l_roots)
38
+ custom helpers, plain ruby code or whatever, see "Back to the roots".
39
39
 
40
- <a id="l_view_helpers"/>
41
40
  ## Using the view helpers (Rails only!)
42
41
 
43
42
  Probably one of the easiest ways to add support for gravatar images is with the included view helpers:
@@ -58,7 +57,6 @@ Using rails `image_tag` to create an `<img/>`-tag with `gravatar_url`. It's impo
58
57
  also an object can be passed to `gravatar_url`, if it responds to either `email` or `mail`. If not (like
59
58
  in the example above), the email address must be passed in.
60
59
 
61
- <a id="l_model_helpers"/>
62
60
  ## Using the model helpers
63
61
 
64
62
  A very simple method to add `gravatar_url` support to models is by using the `gravatarify` class method.
@@ -108,7 +106,6 @@ class:
108
106
  Tadaaa! Works exactly like the model helpers, so it's now possible to call `gravatar_url` on instances
109
107
  of `PoroUser`.
110
108
 
111
- <a id="l_roots"/>
112
109
  ## Back to the roots?
113
110
 
114
111
  No need for sophisticated stuff like view helpers and ActiveRecord integration, want to go back to the roots?
@@ -187,8 +184,13 @@ to generate an image url, based on the request size:
187
184
  @user.gravatar_url(:size => 16)
188
185
  # => "http://0.gravatar.com/...jpg?d=http%3A%2F%2Fexample.com%2Fgravatar-16.jpg&s=16"
189
186
 
190
- Into the block is passed the options hash and as second parameter the object itself, so in the example above
191
- `object` would be `@user`, might be useful!? Never used it, so I might remove the second argument...
187
+ Into the block is passed the options hash and as second parameter the object itself, so it's possible to do stuff like
188
+
189
+ # doing stuff like showing default avatar based on gender...
190
+ @user = User.new(:gender => :female, :email => 'bella@gmail.com') # => @user.female? = true
191
+
192
+ @user.gravatar_url :default => Proc.new { |opts, obj| "http://example.com/avatar#{obj.respond_to?(:female) && obj.female? ? '_female' : ''}.jpg" }
193
+ # => http://0.gravatar.com/...jpg?d=http%3A%2F%2Fexample.com%2Fgravatar_female.jpg
192
194
 
193
195
  Not only the `:default` option accepts a Proc, but also `:secure`, can be useful to handle cases where
194
196
  it should evaluate against `request.ssl?` for example.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
+ :major: 1
3
+ :minor: 1
2
4
  :patch: 0
3
- :major: 1
4
- :minor: 0
data/init.rb CHANGED
@@ -1,2 +1 @@
1
- # Include hook code here
2
- require File.join(File.dirname(__FILE__), 'lib', 'gravatarify')
1
+ require File.join(File.dirname(__FILE__), 'rails', 'init')
data/lib/gravatarify.rb CHANGED
@@ -3,13 +3,9 @@
3
3
  # Base -> provides the basic gravatar_url method, can also be used for
4
4
  # custom implementations, just include Gravatarify::Base.
5
5
  require 'gravatarify/base'
6
- require 'gravatarify/view_helper'
7
6
  require 'gravatarify/object_support'
8
7
 
9
- # include helper for rails
10
- ActionView::Base.send(:include, Gravatarify::ViewHelper) if defined?(ActionView)
11
-
12
8
  # setup for AR und DataMapper, note: DataMapper yet untested :) but I suppose it works, because
13
9
  # it works as expected on plain old ruby objects!
14
10
  ActiveRecord::Base.send(:include, Gravatarify::ObjectSupport) if defined?(ActiveRecord)
15
- DataMapper::Model.append_inclusions(Gravatarify::ObjectSupport) if defined?(DataMapper)
11
+ DataMapper::Model.append_inclusions(Gravatarify::ObjectSupport) if defined?(DataMapper)
@@ -1,5 +1,5 @@
1
1
  require 'digest/md5'
2
- require 'cgi'
2
+ begin; require 'rack/utils'; rescue LoadError; require 'cgi' end
3
3
 
4
4
  module Gravatarify
5
5
  # Subdomains used for balancing
@@ -56,6 +56,8 @@ module Gravatarify
56
56
  # Get subdomain for supplied string or returns +GRAVATAR_DEFAULT_SUBDOMAIN+ if none is
57
57
  # defined.
58
58
  def subdomain(str); subdomains[str.hash % subdomains.size] || GRAVATAR_DEFAULT_SUBDOMAIN end
59
+
60
+ def escape(str); defined?(Rack::Utils) ? Rack::Utils.escape(str) : CGI.escape(str) end
59
61
  end
60
62
 
61
63
  # Provides core support to build gravatar urls based on supplied e-mail strings.
@@ -101,21 +103,32 @@ module Gravatarify
101
103
  # FIXME: add symbolize_keys again, maybe just write custom method, so we do not depend on ActiveSupport magic...
102
104
  url_options = Gravatarify.options.merge(url_options)
103
105
  email_hash = Digest::MD5.hexdigest(Base.get_smart_email_from(email).strip.downcase)
104
- build_gravatar_host(email_hash, url_options.delete(:secure)) << "/avatar/#{email_hash}.#{url_options.delete(:filetype) || GRAVATAR_DEFAULT_FILETYPE}#{build_gravatar_options(url_options)}"
106
+
107
+ build_gravatar_host(email_hash, url_options.delete(:secure)) <<
108
+ "/avatar/#{email_hash}.#{url_options.delete(:filetype) || GRAVATAR_DEFAULT_FILETYPE}#{build_gravatar_options(email, url_options)}"
105
109
  end
106
110
 
107
111
  private
112
+ # Builds gravatar host name from supplied e-mail hash.
113
+ # Ensures that for the same +str_hash+ always the same subdomain is used.
114
+ #
115
+ # @param [String] str_hash email, as hashed string as described in gravatar.com implementation specs
116
+ # @param [Boolean, Proc] secure if set to +true+ then uses gravatars secure host (<tt>https://secure.gravatar.com</tt>),
117
+ # else that subdomain magic. If it's passed in a +Proc+, it's evaluated and the result (+true+/+false+) is used
118
+ # for the same decicion.
119
+ # @return [String] Protocol and hostname (like <tt>http://www.gravatar.com</tt>), without trailing slash.
108
120
  def build_gravatar_host(str_hash, secure = false)
109
121
  secure = secure.call(self) if secure.respond_to?(:call)
110
122
  secure ? "https://secure.gravatar.com" : "http://#{Gravatarify.subdomain(str_hash)}.gravatar.com"
111
123
  end
112
124
 
113
- def build_gravatar_options(url_options = {})
125
+ # Builds a query string from all passed in options.
126
+ def build_gravatar_options(source, url_options = {})
114
127
  params = []
115
128
  url_options.each_pair do |key, value|
116
129
  key = GRAVATAR_ABBREV_OPTIONS[key] if GRAVATAR_ABBREV_OPTIONS.include?(key) # shorten key!
117
- value = value.call(url_options, self) if key.to_s == 'd' and value.respond_to?(:call)
118
- params << "#{CGI.escape(key.to_s)}=#{CGI.escape(value.to_s)}" if value
130
+ value = value.call(url_options, source.is_a?(String) ? self : source) if key.to_s == 'd' and value.respond_to?(:call)
131
+ params << "#{Gravatarify.escape(key.to_s)}=#{Gravatarify.escape(value.to_s)}" if value
119
132
  end
120
133
  "?#{params.sort * '&'}" unless params.empty?
121
134
  end
data/rails/init.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'gravatarify'
2
+
3
+ # load view helpers only if ActionView is available
4
+ if defined?(ActionView)
5
+ require 'gravatarify/view_helper'
6
+ ActionView::Base.send(:include, Gravatarify::ViewHelper)
7
+ end
@@ -83,6 +83,19 @@ class GravatarifyBaseTest < Test::Unit::TestCase
83
83
 
84
84
  assert_equal "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg", build_gravatar_url(obj)
85
85
  end
86
+
87
+ should "handle Procs as :default and pass in the 'object' as second parameter" do
88
+ default = Proc.new { |options, object| "http://example.com/gravatar#{object.respond_to?(:female?) && object.female? ? '_girl' : ''}.jpg" }
89
+ girl = Object.new
90
+ mock(girl).email { "bella@gmail.com" }
91
+ mock(girl).female? { true }
92
+ assert_equal "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?d=http%3A%2F%2Fexample.com%2Fgravatar_girl.jpg", build_gravatar_url(girl, :default => default)
93
+
94
+ boy = Object.new
95
+ mock(boy).email { "hans@gmail.com" }
96
+ mock(boy).female? { false }
97
+ assert_equal "http://www.gravatar.com/avatar/b6987c8f1d734e684cf9721970b906e5.jpg?d=http%3A%2F%2Fexample.com%2Fgravatar.jpg", build_gravatar_url(boy, :default => default)
98
+ end
86
99
  end
87
100
 
88
101
  context "Gravatar hosts support" do
@@ -2,70 +2,62 @@ require 'test_helper'
2
2
  require 'gravatarify/base'
3
3
  require 'gravatarify/object_support'
4
4
 
5
+ class PoroUser
6
+ include Gravatarify::ObjectSupport
7
+ attr_accessor :email, :gender
8
+ def initialize(attributes = {})
9
+ attributes.each do |key, value|
10
+ self.send "#{key}=", value
11
+ end
12
+ end
13
+ end
14
+
5
15
  class GravatarifyObjectSupportTest < Test::Unit::TestCase
6
16
  def setup; reset_gravatarify! end
7
17
 
8
18
  context "#gravatarify" do
9
19
  should "add support for #gravatar_url to POROs (plain old ruby objects, yeah POJO sounds better!)" do
10
- poro = Class.new do
11
- include Gravatarify::ObjectSupport
12
- gravatarify
13
- def email; "mike@shiva.ch" end
14
- end
15
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new.gravatar_url
16
- assert_equal "https://secure.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new.gravatar_url(:secure => true)
17
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.gif?r=x&s=16", poro.new.gravatar_url(:filetype => :gif, :rating => :x, :size => 16)
20
+ poro = Class.new(PoroUser) { gravatarify }
21
+ mike_shiva = poro.new(:email => 'mike@shiva.ch')
22
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", mike_shiva.gravatar_url
23
+ assert_equal "https://secure.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", mike_shiva.gravatar_url(:secure => true)
24
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.gif?r=x&s=16", mike_shiva.gravatar_url(:filetype => :gif, :rating => :x, :size => 16)
18
25
  end
19
26
 
20
27
  should "allow some default options to be passed, which can be overriden locally, though" do
21
- poro = Class.new do
22
- include Gravatarify::ObjectSupport
23
- gravatarify :secure => true, :filetype => :gif
24
- def email; "mike@shiva.ch" end
25
- end
26
- assert_equal "https://secure.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.gif", poro.new.gravatar_url
27
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.gif", poro.new.gravatar_url(:secure => false)
28
- assert_equal "https://secure.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg?r=x&s=16", poro.new.gravatar_url(:filetype => :jpg, :rating => :x, :size => 16)
28
+ poro = Class.new(PoroUser) { gravatarify :secure => true, :filetype => :gif }
29
+ mike_shiva = poro.new(:email => 'mike@shiva.ch')
30
+ assert_equal "https://secure.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.gif", mike_shiva.gravatar_url
31
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.gif", mike_shiva.gravatar_url(:secure => false)
32
+ assert_equal "https://secure.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg?r=x&s=16", mike_shiva.gravatar_url(:filetype => :jpg, :rating => :x, :size => 16)
29
33
  end
30
34
 
31
35
  should "still respect options set by Gravatarify#options" do
32
36
  Gravatarify.options[:size] = 20
33
- poro = Class.new do
34
- include Gravatarify::ObjectSupport
35
- gravatarify
36
- def email; "mike@shiva.ch" end
37
- end
38
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg?s=20", poro.new.gravatar_url
37
+ poro = Class.new(PoroUser) { gravatarify }
38
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg?s=20", poro.new(:email => 'mike@shiva.ch').gravatar_url
39
39
  end
40
40
 
41
41
  should "be able to override options set by Gravatarify#options" do
42
42
  Gravatarify.options[:size] = 20
43
- poro = Class.new do
44
- include Gravatarify::ObjectSupport
45
- gravatarify :size => 25
46
- def email; "mike@shiva.ch" end
47
- end
48
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg?s=25", poro.new.gravatar_url
43
+ poro = Class.new(PoroUser) { gravatarify :size => 25 }
44
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg?s=25", poro.new(:email => 'mike@shiva.ch').gravatar_url
49
45
  end
50
46
  end
51
47
 
52
48
  context "#gravatarify with custom fields" do
53
49
  should "detect and use the 'email' field automatically" do
54
- poro = Class.new do
55
- include Gravatarify::ObjectSupport
56
- gravatarify
57
- def email; "mike@shiva.ch" end
58
- end
59
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new.gravatar_url
50
+ poro = Class.new(PoroUser) { gravatarify }
51
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new(:email => 'mike@shiva.ch').gravatar_url
60
52
  end
61
53
 
62
54
  should "fallback to 'mail' if 'email' is not defined" do
63
- poro = Class.new do
64
- include Gravatarify::ObjectSupport
55
+ poro = Class.new(PoroUser) do
65
56
  gravatarify
66
- def mail; "mike@shiva.ch" end
57
+ undef :email, :email=
58
+ attr_accessor :mail
67
59
  end
68
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new.gravatar_url
60
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new(:mail => 'mike@shiva.ch').gravatar_url
69
61
  end
70
62
 
71
63
  should "raise NoMethodError if object does not respond to source" do
@@ -77,23 +69,41 @@ class GravatarifyObjectSupportTest < Test::Unit::TestCase
77
69
  end
78
70
 
79
71
  should "allow to set custom source, like author_email" do
80
- poro = Class.new do
81
- include Gravatarify::ObjectSupport
72
+ poro = Class.new(PoroUser) do
82
73
  gravatarify :author_email
83
- def author_email; "mike@shiva.ch" end
74
+ attr_accessor :author_email
84
75
  end
85
- assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new.gravatar_url
76
+ assert_equal "http://0.gravatar.com/avatar/1b2818d77eadd6c9dbbe7f3beb1492c3.jpg", poro.new(:author_email => 'mike@shiva.ch').gravatar_url
86
77
  end
87
78
 
88
79
  should "allow multiple sources to be defined, yet still handle options!" do
89
- poro = Class.new do
90
- include Gravatarify::ObjectSupport
80
+ poro = Class.new(PoroUser) do
91
81
  gravatarify :email, :employee_email, :default => Proc.new { |*args| "http://initech.com/avatar-#{args.first[:size] || 80}.jpg" }
92
- def email; "info@initech.com" end
93
- def employee_email; "peter.gibbons@initech.com" end
82
+ attr_accessor :employee_email
83
+ end
84
+ peter_gibbons = poro.new(:email => 'info@initech.com', :employee_email => 'peter.gibbons@initech.com')
85
+ assert_equal "http://2.gravatar.com/avatar/4979dd9653e759c78a81d4997f56bae2.jpg?d=http%3A%2F%2Finitech.com%2Favatar-20.jpg&s=20", peter_gibbons.gravatar_url(:size => 20)
86
+ assert_equal "http://0.gravatar.com/avatar/cb7865556d41a3d800ae7dbb31d51d54.jpg?d=http%3A%2F%2Finitech.com%2Favatar-25.jpg&s=25", peter_gibbons.employee_gravatar_url(:size => 25)
87
+ end
88
+
89
+ should "use full prefix, if not suffixed by email" do
90
+ poro = Class.new(PoroUser) do
91
+ gravatarify :email, :employee_login
92
+ attr_accessor :employee_login
93
+ end
94
+ peter_gibbons = poro.new(:email => 'peter.gibbons@initech.com', :employee_login => 'peter.gibbons@initech.com')
95
+ assert_respond_to peter_gibbons, :employee_login_gravatar_url
96
+ assert_equal "http://0.gravatar.com/avatar/cb7865556d41a3d800ae7dbb31d51d54.jpg?s=25", peter_gibbons.employee_login_gravatar_url(:size => 25)
97
+ end
98
+
99
+ should "pass in object as second parameter, not supplied string" do
100
+ poro = Class.new(PoroUser) do
101
+ gravatarify :default => Proc.new { |opts, obj| "http://initech.com/avatar#{obj.respond_to?(:gender) && obj.gender == :female ? '_girl' : ''}.jpg" }
94
102
  end
95
- assert_equal "http://2.gravatar.com/avatar/4979dd9653e759c78a81d4997f56bae2.jpg?d=http%3A%2F%2Finitech.com%2Favatar-20.jpg&s=20", poro.new.gravatar_url(:size => 20)
96
- assert_equal "http://0.gravatar.com/avatar/cb7865556d41a3d800ae7dbb31d51d54.jpg?d=http%3A%2F%2Finitech.com%2Favatar-25.jpg&s=25", poro.new.employee_gravatar_url(:size => 25)
103
+ peter_gibbons = poro.new(:email => 'peter.gibbons@initech.com', :gender => :male)
104
+ jane = poro.new(:email => 'jane@initech.com', :gender => :female)
105
+ assert_equal "http://0.gravatar.com/avatar/cb7865556d41a3d800ae7dbb31d51d54.jpg?d=http%3A%2F%2Finitech.com%2Favatar.jpg&s=25", peter_gibbons.gravatar_url(:s => 25)
106
+ assert_equal "http://1.gravatar.com/avatar/9b78f3f45cf32d7c52d304a63f6aef06.jpg?d=http%3A%2F%2Finitech.com%2Favatar_girl.jpg&s=35", jane.gravatar_url(:s => 35)
97
107
  end
98
108
  end
99
109
  end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+ require 'gravatarify/base'
3
+
4
+ class GravatarifyRackVsCgiTest < Test::Unit::TestCase
5
+ include Gravatarify::Base
6
+
7
+ # Reload Rack::Utils
8
+ def teardown
9
+ begin; require('rack/utils'); rescue LoadError; end
10
+ end
11
+
12
+ context "if Rack::Utils is not available, #gravatarify" do
13
+ setup do
14
+ # Remove Rack if defined
15
+ Object.send(:remove_const, :Rack) if defined?(Rack)
16
+ end
17
+
18
+ should "fallback to CGI#escape" do
19
+ assert !defined?(Rack::Utils), 'Rack::Utils should no longer be defined'
20
+ assert defined?(CGI), "CGI should be defined"
21
+ assert_equal "http://0.gravatar.com/avatar/1cacf1bc403efca2e7a58bcfa9574e4d.jpg?escaped%2Fme=escaped%2Fme",
22
+ build_gravatar_url('bella@gmail.com', 'escaped/me' => 'escaped/me')
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gravatarify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Westermann
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-02 00:00:00 +02:00
12
+ date: 2009-10-09 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -34,9 +34,11 @@ files:
34
34
  - lib/gravatarify/base.rb
35
35
  - lib/gravatarify/object_support.rb
36
36
  - lib/gravatarify/view_helper.rb
37
+ - rails/init.rb
37
38
  - test/gravatarify_base_test.rb
38
39
  - test/gravatarify_integration_test.rb
39
40
  - test/gravatarify_object_support_test.rb
41
+ - test/gravatarify_rack_vs_cgi_test.rb
40
42
  - test/gravatarify_subdomain_test.rb
41
43
  - test/gravatarify_view_helper_test.rb
42
44
  - test/test_helper.rb
@@ -72,6 +74,7 @@ test_files:
72
74
  - test/gravatarify_base_test.rb
73
75
  - test/gravatarify_integration_test.rb
74
76
  - test/gravatarify_object_support_test.rb
77
+ - test/gravatarify_rack_vs_cgi_test.rb
75
78
  - test/gravatarify_subdomain_test.rb
76
79
  - test/gravatarify_view_helper_test.rb
77
80
  - test/test_helper.rb