acts_as_connectable 0.0.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.
Files changed (68) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/Rakefile +2 -0
  4. data/acts_as_connectable.gemspec +24 -0
  5. data/app/controllers/authentications_controller.rb +43 -0
  6. data/app/helpers/layout_helper.erb +18 -0
  7. data/app/models/authentication.rb +16 -0
  8. data/app/views/authentications/index.html.erb +31 -0
  9. data/config/initializers/omniauth.rb +87 -0
  10. data/config/providers.yml +26 -0
  11. data/db/migrate/create_authentications.rb +20 -0
  12. data/lib/acts_as_connectable.rb +23 -0
  13. data/lib/acts_as_connectable/version.rb +3 -0
  14. data/lib/application_controller.rb +26 -0
  15. data/lib/application_helper.rb +7 -0
  16. data/lib/engine.rb +10 -0
  17. data/lib/generators/acts_as_connectable/acts_as_connectable_generator.rb +9 -0
  18. data/lib/generators/acts_as_connectable/install_generator.rb +48 -0
  19. data/public/images/acts_as_connectable/aol_128.png +0 -0
  20. data/public/images/acts_as_connectable/aol_256.png +0 -0
  21. data/public/images/acts_as_connectable/aol_32.png +0 -0
  22. data/public/images/acts_as_connectable/aol_64.png +0 -0
  23. data/public/images/acts_as_connectable/basecamp_128.png +0 -0
  24. data/public/images/acts_as_connectable/basecamp_256.png +0 -0
  25. data/public/images/acts_as_connectable/basecamp_32.png +0 -0
  26. data/public/images/acts_as_connectable/basecamp_64.png +0 -0
  27. data/public/images/acts_as_connectable/campfire_128.png +0 -0
  28. data/public/images/acts_as_connectable/campfire_256.png +0 -0
  29. data/public/images/acts_as_connectable/campfire_32.png +0 -0
  30. data/public/images/acts_as_connectable/campfire_64.png +0 -0
  31. data/public/images/acts_as_connectable/facebook_128.png +0 -0
  32. data/public/images/acts_as_connectable/facebook_256.png +0 -0
  33. data/public/images/acts_as_connectable/facebook_32.png +0 -0
  34. data/public/images/acts_as_connectable/facebook_64.png +0 -0
  35. data/public/images/acts_as_connectable/github_128.png +0 -0
  36. data/public/images/acts_as_connectable/github_256.png +0 -0
  37. data/public/images/acts_as_connectable/github_32.png +0 -0
  38. data/public/images/acts_as_connectable/github_64.png +0 -0
  39. data/public/images/acts_as_connectable/google_128.png +0 -0
  40. data/public/images/acts_as_connectable/google_256.png +0 -0
  41. data/public/images/acts_as_connectable/google_32.png +0 -0
  42. data/public/images/acts_as_connectable/google_64.png +0 -0
  43. data/public/images/acts_as_connectable/linkedin_128.png +0 -0
  44. data/public/images/acts_as_connectable/linkedin_256.png +0 -0
  45. data/public/images/acts_as_connectable/linkedin_32.png +0 -0
  46. data/public/images/acts_as_connectable/linkedin_64.png +0 -0
  47. data/public/images/acts_as_connectable/myspace_128.png +0 -0
  48. data/public/images/acts_as_connectable/myspace_256.png +0 -0
  49. data/public/images/acts_as_connectable/myspace_32.png +0 -0
  50. data/public/images/acts_as_connectable/myspace_64.png +0 -0
  51. data/public/images/acts_as_connectable/openid_128.png +0 -0
  52. data/public/images/acts_as_connectable/openid_256.png +0 -0
  53. data/public/images/acts_as_connectable/openid_32.png +0 -0
  54. data/public/images/acts_as_connectable/openid_64.png +0 -0
  55. data/public/images/acts_as_connectable/presently_128.png +0 -0
  56. data/public/images/acts_as_connectable/presently_256.png +0 -0
  57. data/public/images/acts_as_connectable/presently_32.png +0 -0
  58. data/public/images/acts_as_connectable/presently_64.png +0 -0
  59. data/public/images/acts_as_connectable/rails.png +0 -0
  60. data/public/images/acts_as_connectable/twitter_128.png +0 -0
  61. data/public/images/acts_as_connectable/twitter_256.png +0 -0
  62. data/public/images/acts_as_connectable/twitter_32.png +0 -0
  63. data/public/images/acts_as_connectable/twitter_64.png +0 -0
  64. data/public/images/acts_as_connectable/yahoo_128.png +0 -0
  65. data/public/images/acts_as_connectable/yahoo_256.png +0 -0
  66. data/public/images/acts_as_connectable/yahoo_32.png +0 -0
  67. data/public/images/acts_as_connectable/yahoo_64.png +0 -0
  68. metadata +160 -0
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in acts_as_connectable.gemspec
4
+ gemspec
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "acts_as_connectable/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "acts_as_connectable"
7
+ s.version = ActsAsConnectable::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Cody Swann"]
10
+ s.email = ["cody@gunnertech.com"]
11
+ s.homepage = "http://gunnertech.com"
12
+ s.summary = %q{A gem for wiring models, polymorphically, to social accounts using omniAuth and devise}
13
+ s.description = %q{Aids in configuring OmniAuth and desvise}
14
+
15
+ s.rubyforge_project = "acts_as_connectable"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency('omniauth', '>= 0.1.6')
23
+ s.add_dependency('devise', '>= 1.1.5')
24
+ end
@@ -0,0 +1,43 @@
1
+ class AuthenticationsController < ApplicationController
2
+
3
+ unloadable
4
+
5
+ def index
6
+ @authentications = current_user.authentications if current_user
7
+ end
8
+
9
+ def create
10
+ omniauth = request.env["omniauth.auth"]
11
+ if omniauth
12
+ uid = (omniauth['uid']||omniauth['extra']['access_token'].params['member_id'])
13
+ authentication = Authentication.find_by_provider_and_authenticationable_type_and_uid(omniauth['provider'], uid)
14
+ if authentication
15
+ flash[:notice] = "Signed in successfully."
16
+ sign_in_and_redirect(:user, authentication.user)
17
+ elsif current_user
18
+ current_user.authentications.create!(:provider => omniauth['provider'], :uid => uid, :token => omniauth['credentials']['token'], :secret => omniauth['credentials']['secret'])
19
+ flash[:notice] = "Authentication successful."
20
+ redirect_to authentications_url
21
+ else
22
+ user = User.new
23
+ user.apply_omniauth(omniauth)
24
+ if user.save
25
+ flash[:notice] = "Signed in successfully."
26
+ sign_in_and_redirect(:user, user)
27
+ else
28
+ session[:omniauth] = omniauth.except('extra')
29
+ redirect_to new_user_registration_url
30
+ end
31
+ end
32
+ else
33
+ redirect_to root_url
34
+ end
35
+ end
36
+
37
+ def destroy
38
+ @authentication = current_user.authentications.find(params[:id])
39
+ @authentication.destroy
40
+ flash[:notice] = "Successfully destroyed authentication."
41
+ redirect_to authentications_url
42
+ end
43
+ end
@@ -0,0 +1,18 @@
1
+ module LayoutHelper
2
+ def title(page_title, show_title = true)
3
+ content_for(:title) { page_title.to_s }
4
+ @show_title = show_title
5
+ end
6
+
7
+ def show_title?
8
+ @show_title
9
+ end
10
+
11
+ def stylesheet(*args)
12
+ content_for(:head) { stylesheet_link_tag(*args) }
13
+ end
14
+
15
+ def javascript(*args)
16
+ content_for(:head) { javascript_include_tag(*args) }
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ class Authentication < ActiveRecord::Base
2
+ PROVIDER_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/providers.yml")[::Rails.env]
3
+
4
+ belongs_to :user
5
+
6
+ validates :provider, :presence => true, :length => 1..64
7
+ validates :uid, :presence => true, :length => 1..128
8
+ validates :token, :length => 0..128, :allow_blank => true
9
+ validates :secret, :length => 0..128, :allow_blank => true
10
+
11
+ for p in PROVIDER_CONFIG['providers']
12
+ scope p['name'].to_sym, where(:provider => p['name'])
13
+ end
14
+
15
+ attr_accessible :user_id, :provider, :uid, :token, :secret
16
+ end
@@ -0,0 +1,31 @@
1
+
2
+ <% title "Sign In" %>
3
+ <% if @authentications %>
4
+ <% unless @authentications.empty? %>
5
+ <p><strong>You can sign in to this account using:</strong></p>
6
+ <div class="authentications">
7
+ <% for authentication in @authentications %>
8
+ <div class="authentication">
9
+ <%= image_tag "acts_as_connectable/#{authentication.provider}_32.png", :size => "32x32" %>
10
+ <div class="provider"><%= authentication.provider.titleize %></div>
11
+ <div class="uid"><%= authentication.uid %></div>
12
+ <%= link_to "X", authentication, :confirm => 'Are you sure you want to remove this authentication option?', :method => :delete, :class => "remove" %>
13
+ </div>
14
+ <% end %>
15
+ <div class="clear"></div>
16
+ </div>
17
+ <% end %>
18
+ <p><strong>Add another service to sign in with:</strong></p>
19
+ <% else %>
20
+ <p><strong>Sign in through one of these services:</strong></p>
21
+ <% end %>
22
+
23
+ <a href="/auth/twitter" class="auth_provider">
24
+ <%= image_tag "acts_as_connectable/twitter_64.png", :size => "64x64", :alt => "Twitter" %>Twitter</a>
25
+ <a href="/auth/facebook" class="auth_provider">
26
+ <%= image_tag "acts_as_connectable/facebook_64.png", :size => "64x64", :alt => "Facebook" %>Facebook</a>
27
+ <a href="/auth/google_apps" class="auth_provider">
28
+ <%= image_tag "acts_as_connectable/google_64.png", :size => "64x64", :alt => "Google" %>Google</a>
29
+ <a href="/auth/open_id" class="auth_provider">
30
+ <%= image_tag "acts_as_connectable/openid_64.png", :size => "64x64", :alt => "OpenID" %>OpenID</a>
31
+ <div class="clear"></div>
@@ -0,0 +1,87 @@
1
+ module OmniAuth
2
+ module Strategies
3
+ #
4
+ # Authenticate to Flickr
5
+ #
6
+ # @example Basic Usage
7
+ #
8
+ # use OmniAuth::Strategies::Flickr, 'API Key', 'Secret Key', :scope => 'read'
9
+ class Flickr
10
+ include OmniAuth::Strategy
11
+ attr_accessor :api_key, :secret_key, :options
12
+
13
+ # error catching, based on OAuth2 callback
14
+ class CallbackError < StandardError
15
+ attr_accessor :error, :error_reason
16
+ def initialize(error, error_reason)
17
+ self.error = error
18
+ self.error_reason = error_reason
19
+ end
20
+ end
21
+
22
+ # @param [Rack Application] app standard middleware application parameter
23
+ # @param [String] api_key the application id as [registered on Flickr](http://www.flickr.com/services/apps/)
24
+ # @param [String] secret_key the application secret as [registered on Flickr](http://www.flickr.com/services/apps/)
25
+ # @option options ['read','write','delete] :scope ('read') the scope of your authorization request; must be `read` or 'write' or 'delete'
26
+ def initialize(app, api_key, secret_key, options = {})
27
+ super(app, :flickr)
28
+ @api_key = api_key
29
+ @secret_key = secret_key
30
+ @options = {:scope => 'read'}.merge(options)
31
+ end
32
+
33
+ protected
34
+
35
+ def request_phase
36
+ params = { :api_key => api_key, :perms => options[:scope] }
37
+ params[:api_sig] = flickr_sign(params)
38
+ query_string = params.collect{ |key,value| "#{key}=#{Rack::Utils.escape(value)}" }.join('&')
39
+ redirect "http://flickr.com/services/auth/?#{query_string}"
40
+ end
41
+
42
+ def callback_phase
43
+ params = { :api_key => api_key, :method => 'flickr.auth.getToken', :frob => request.params['frob'], :format => 'json', :nojsoncallback => '1' }
44
+ params[:api_sig] = flickr_sign(params)
45
+
46
+ response = RestClient.get('http://api.flickr.com/services/rest/', { :params => params })
47
+ auth = MultiJson.decode(response.to_s)
48
+ raise CallbackError.new(auth['code'],auth['message']) if auth['stat'] == 'fail'
49
+
50
+ @user = auth['auth']['user']
51
+ @access_token = auth['auth']['token']['_content']
52
+
53
+ super
54
+ rescue CallbackError => e
55
+ fail!(:invalid_response, e)
56
+ end
57
+
58
+ def auth_hash
59
+ OmniAuth::Utils.deep_merge(super, {
60
+ 'uid' => @user['nsid'],
61
+ 'credentials' => { 'token' => @access_token },
62
+ 'user_info' => @user,
63
+ 'extra' => { 'user_hash' => @user }
64
+ })
65
+ end
66
+
67
+ def flickr_sign(params)
68
+ Digest::MD5.hexdigest(secret_key + params.sort{|a,b| a[0].to_s <=> b[0].to_s }.flatten.join)
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+
75
+ module ProvidersConfig
76
+ end
77
+
78
+ Rails.application.config.middleware.use OmniAuth::Builder do
79
+ PROVIDER_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/providers.yml")[::Rails.env]
80
+ for p in PROVIDER_CONFIG['providers']
81
+ provider p['name'], p['key'], p['secret']
82
+ ProvidersConfig.const_set(p['name'].classify.upcase,{
83
+ :key => p['key'],
84
+ :secret => p['secret']
85
+ })
86
+ end
87
+ end
@@ -0,0 +1,26 @@
1
+ defaults: &defaults
2
+ providers:
3
+ - name: twitter
4
+ key: qLDNyJWYR4uwgVlQ1Z3A
5
+ secret: EZlvNgye1feUDvF9Mn6XyNgYfILBEfIe17K5xKZyBs
6
+ - name: facebook
7
+ key: 141623055893054 #aka app_id
8
+ secret: 2adbbdd1c5a28f3fac021c5cd1a59f47
9
+ - name: foursquare
10
+ key: ZFJLIRWR5VAAS2M3ANVXBGJJ2W0LVOG003W52E0M5JWUV5MP
11
+ secret: V2XZFYRUEVCU1EI4LCDYNCADX43NEJERJENRLYIL0APSALZ2
12
+ - name: flickr
13
+ key: 598bcfd26c5091db5b68713f5126dc26
14
+ secret: 7cc1ace805d88475
15
+ - name: meetup
16
+ key: 776E306E6B28327449134646BBF89807
17
+ secret: 4CB887C5918F48F3ADE8E0E931F74B70
18
+
19
+ development:
20
+ <<: *defaults
21
+
22
+ test:
23
+ <<: *defaults
24
+
25
+ production:
26
+ <<: *defaults
@@ -0,0 +1,20 @@
1
+ class ActsAsConnectableCreateAuthentications < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :authentications do |t|
4
+ t.references :authenticationable, :polymorphic => true
5
+ t.string :provider, :null => false, :limit => 64
6
+ t.string :uid, :null => false, :limit => 128
7
+ t.string :token, :limit => 128
8
+ t.string :secret, :limit => 128
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :authentications, [:authenticationable_id, :authenticationable_type], :name => "index_authentications_on_a_id_a_type"
13
+ add_index :authentications, :provider
14
+ add_index :authentications, [:provider, :authenticationable_type, :uid]
15
+ end
16
+
17
+ def self.down
18
+ drop_table :authentications
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ module ActsAsConnectable
2
+ # Default way to setup ActsAsConnectable. Run rails generate acts_as_connectable:install
3
+ # to create a fresh initializer with all configuration values.
4
+ def self.setup
5
+ yield self
6
+ end
7
+
8
+ def self.included(base)
9
+ base.extend ClassMethods
10
+ def base.apply_omniauth(omniauth)
11
+ authentications.build(:provider => omniauth['provider'], :uid => omniauth['uid'])
12
+ end
13
+ end
14
+
15
+ module ClassMethods
16
+ def acts_as_connectable(*args)
17
+ has_many :authentications, {:as => :authenticationable, :dependent => :destroy, :class_name => "Authentication"}
18
+ end
19
+ end
20
+ end
21
+
22
+
23
+ ActiveRecord::Base.send(:include, ActsAsConnectable)
@@ -0,0 +1,3 @@
1
+ module ActsAsConnectable
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,26 @@
1
+ module ActsAsConnectable
2
+ ## Define ControllerMethods
3
+ module Controller
4
+ ## this one manages the usual self.included, klass_eval stuff
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ before_filter :test_controller_instance_method
9
+ end
10
+
11
+ module InstanceMethods
12
+ def test_controller_instance_method
13
+ puts "###### This text is coming from an application_controller before_filter that is being declared and triggered from inside the engine. This before_filter is automatically integrated in when the engine is installed into an app. Look inside lib/application_controller.rb to find it. ######"
14
+ end
15
+
16
+ # This method is available inside application_controller but it is not being
17
+ # automatically executed. Notice the before_filter line above that is automatically
18
+ # executing the first method.
19
+ def second_controller_instance_method
20
+ puts "###### This method is not automatically run inside application_controller, but it is available inside application_controller. To see this example add 'before_filter :second_controller_instance_method' at the top of your app's application_controller.rb ######"
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ ::ActionController::Base.send :include, ActsAsConnectable::Controller
@@ -0,0 +1,7 @@
1
+ module ApplicationHelper
2
+
3
+ def app_wide_helper_method
4
+ "this output is from an app-wide helper method that is declared within the gem"
5
+ end
6
+
7
+ end
@@ -0,0 +1,10 @@
1
+ require 'rails'
2
+ require 'action_controller'
3
+ require 'application_helper'
4
+
5
+ module ActsAsConnectable
6
+ class Engine < Rails::Engine
7
+
8
+
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ module ActsAsConnectable
2
+ module Generators
3
+ class ActsAsConnectableGenerator < Rails::Generators::NamedBase
4
+ namespace "acts_as_connectable"
5
+ source_root File.expand_path("../templates", __FILE__)
6
+
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,48 @@
1
+ module ActsAsConnectable
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def copy_initializer
7
+ copy_file "../../../../config/initializers/omniauth.rb", "config/initializers/omniauth.rb"
8
+ end
9
+
10
+ def copy_providers
11
+ copy_file "../../../../config/providers.yml", "config/providers.yml"
12
+ end
13
+
14
+ def copy_controllers
15
+ copy_file "../../../../app/controllers/authentications_controller.rb", "app/controllers/authentications_controller.rb"
16
+ end
17
+
18
+ def copy_models
19
+ copy_file "../../../../app/models/authentication.rb", "app/models/authentication.rb"
20
+ end
21
+
22
+ def copy_helpers
23
+ copy_file "../../../../app/helpers/layout_helper.rb", "app/helpers/layout_helper.rb"
24
+ end
25
+
26
+ def copy_views
27
+ directory "../../../../app/views/authentications", "app/views/authentications"
28
+ end
29
+
30
+ def copy_assets
31
+ directory "../../../../public/images/acts_as_connectable", "public/images/acts_as_connectable"
32
+ end
33
+
34
+ def copy_migration
35
+ #copy_file "../../../../db/migrate/create_authentications.rb", "db/migrate/#{Time.now.utc.strftime("%Y%m%d%H%M%S")}_acts_as_connectable_create_authentications.rb"
36
+ end
37
+
38
+ def show_readme
39
+ #readme "README" if behavior == :invoke
40
+ end
41
+
42
+ def copy_routes
43
+ route "match '/auth/:provider/callback' => 'authentications#create'"
44
+ route "resources :authentications"
45
+ end
46
+ end
47
+ end
48
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_connectable
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2
9
+ version: 0.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Cody Swann
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-02-14 00:00:00 -08:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: omniauth
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 1
31
+ - 6
32
+ version: 0.1.6
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: devise
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 1
45
+ - 1
46
+ - 5
47
+ version: 1.1.5
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ description: Aids in configuring OmniAuth and desvise
51
+ email:
52
+ - cody@gunnertech.com
53
+ executables: []
54
+
55
+ extensions: []
56
+
57
+ extra_rdoc_files: []
58
+
59
+ files:
60
+ - .gitignore
61
+ - Gemfile
62
+ - Rakefile
63
+ - acts_as_connectable.gemspec
64
+ - app/controllers/authentications_controller.rb
65
+ - app/helpers/layout_helper.erb
66
+ - app/models/authentication.rb
67
+ - app/views/authentications/index.html.erb
68
+ - config/initializers/omniauth.rb
69
+ - config/providers.yml
70
+ - db/migrate/create_authentications.rb
71
+ - lib/acts_as_connectable.rb
72
+ - lib/acts_as_connectable/version.rb
73
+ - lib/application_controller.rb
74
+ - lib/application_helper.rb
75
+ - lib/engine.rb
76
+ - lib/generators/acts_as_connectable/acts_as_connectable_generator.rb
77
+ - lib/generators/acts_as_connectable/install_generator.rb
78
+ - public/images/acts_as_connectable/aol_128.png
79
+ - public/images/acts_as_connectable/aol_256.png
80
+ - public/images/acts_as_connectable/aol_32.png
81
+ - public/images/acts_as_connectable/aol_64.png
82
+ - public/images/acts_as_connectable/basecamp_128.png
83
+ - public/images/acts_as_connectable/basecamp_256.png
84
+ - public/images/acts_as_connectable/basecamp_32.png
85
+ - public/images/acts_as_connectable/basecamp_64.png
86
+ - public/images/acts_as_connectable/campfire_128.png
87
+ - public/images/acts_as_connectable/campfire_256.png
88
+ - public/images/acts_as_connectable/campfire_32.png
89
+ - public/images/acts_as_connectable/campfire_64.png
90
+ - public/images/acts_as_connectable/facebook_128.png
91
+ - public/images/acts_as_connectable/facebook_256.png
92
+ - public/images/acts_as_connectable/facebook_32.png
93
+ - public/images/acts_as_connectable/facebook_64.png
94
+ - public/images/acts_as_connectable/github_128.png
95
+ - public/images/acts_as_connectable/github_256.png
96
+ - public/images/acts_as_connectable/github_32.png
97
+ - public/images/acts_as_connectable/github_64.png
98
+ - public/images/acts_as_connectable/google_128.png
99
+ - public/images/acts_as_connectable/google_256.png
100
+ - public/images/acts_as_connectable/google_32.png
101
+ - public/images/acts_as_connectable/google_64.png
102
+ - public/images/acts_as_connectable/linkedin_128.png
103
+ - public/images/acts_as_connectable/linkedin_256.png
104
+ - public/images/acts_as_connectable/linkedin_32.png
105
+ - public/images/acts_as_connectable/linkedin_64.png
106
+ - public/images/acts_as_connectable/myspace_128.png
107
+ - public/images/acts_as_connectable/myspace_256.png
108
+ - public/images/acts_as_connectable/myspace_32.png
109
+ - public/images/acts_as_connectable/myspace_64.png
110
+ - public/images/acts_as_connectable/openid_128.png
111
+ - public/images/acts_as_connectable/openid_256.png
112
+ - public/images/acts_as_connectable/openid_32.png
113
+ - public/images/acts_as_connectable/openid_64.png
114
+ - public/images/acts_as_connectable/presently_128.png
115
+ - public/images/acts_as_connectable/presently_256.png
116
+ - public/images/acts_as_connectable/presently_32.png
117
+ - public/images/acts_as_connectable/presently_64.png
118
+ - public/images/acts_as_connectable/rails.png
119
+ - public/images/acts_as_connectable/twitter_128.png
120
+ - public/images/acts_as_connectable/twitter_256.png
121
+ - public/images/acts_as_connectable/twitter_32.png
122
+ - public/images/acts_as_connectable/twitter_64.png
123
+ - public/images/acts_as_connectable/yahoo_128.png
124
+ - public/images/acts_as_connectable/yahoo_256.png
125
+ - public/images/acts_as_connectable/yahoo_32.png
126
+ - public/images/acts_as_connectable/yahoo_64.png
127
+ has_rdoc: true
128
+ homepage: http://gunnertech.com
129
+ licenses: []
130
+
131
+ post_install_message:
132
+ rdoc_options: []
133
+
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ requirements: []
153
+
154
+ rubyforge_project: acts_as_connectable
155
+ rubygems_version: 1.3.7
156
+ signing_key:
157
+ specification_version: 3
158
+ summary: A gem for wiring models, polymorphically, to social accounts using omniAuth and devise
159
+ test_files: []
160
+