gravatarify 1.0.0 → 1.1.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.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