social_stream 0.18.2 → 0.19.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.
Files changed (54) hide show
  1. data/base/app/assets/javascripts/activities.js.erb +5 -5
  2. data/base/app/assets/javascripts/social_stream-base.js +2 -0
  3. data/base/app/assets/stylesheets/cheesecake.css.scss +13 -0
  4. data/base/app/controllers/omniauth_callbacks_controller.rb +3 -3
  5. data/base/app/helpers/notifications_helper.rb +2 -2
  6. data/base/app/models/user.rb +15 -14
  7. data/base/app/views/cheesecake/_cheesecake.html.erb +69 -1
  8. data/base/app/views/frontpage/_social_networks.html.erb +1 -1
  9. data/base/app/views/layouts/application.html.erb +6 -1
  10. data/base/lib/acts_as_taggable_on/social_stream.rb +59 -31
  11. data/base/lib/i18n-js/social_stream-base.rb +36 -0
  12. data/base/lib/social_stream/base/dependencies.rb +6 -2
  13. data/base/lib/social_stream/base/version.rb +1 -1
  14. data/base/lib/social_stream/controllers/cancan_devise_integration.rb +15 -18
  15. data/base/lib/social_stream/controllers/helpers.rb +81 -83
  16. data/base/lib/social_stream/controllers/i18n_integration.rb +11 -13
  17. data/base/lib/social_stream/controllers/objects.rb +4 -7
  18. data/base/lib/social_stream/controllers/subjects.rb +3 -5
  19. data/base/lib/social_stream/models/channeled.rb +24 -26
  20. data/base/lib/social_stream/models/object.rb +57 -61
  21. data/base/lib/social_stream/models/subject.rb +4 -8
  22. data/base/lib/social_stream/models/subtype.rb +36 -34
  23. data/base/lib/social_stream/models/supertype.rb +17 -21
  24. data/base/lib/tasks/db/populate.rake +11 -3
  25. data/base/social_stream-base.gemspec +9 -5
  26. data/base/spec/dummy/config/initializers/devise.rb +1 -1
  27. data/documents/app/assets/javascripts/documents.js.erb +1 -1
  28. data/documents/lib/delayed_paperclip/social_stream-documents.rb +18 -0
  29. data/documents/lib/paperclip/social_stream-documents.rb +48 -0
  30. data/documents/lib/social_stream-documents.rb +1 -4
  31. data/documents/lib/social_stream/documents/dependencies.rb +6 -0
  32. data/documents/lib/social_stream/documents/engine.rb +24 -7
  33. data/documents/lib/social_stream/documents/version.rb +1 -1
  34. data/documents/social_stream-documents.gemspec +3 -5
  35. data/documents/spec/dummy/config/initializers/devise.rb +1 -1
  36. data/events/app/assets/stylesheets/events.css.scss +41 -0
  37. data/events/app/views/events/_event.html.erb +23 -1
  38. data/events/lib/social_stream/events/models/actor.rb +2 -4
  39. data/events/lib/social_stream/events/version.rb +1 -1
  40. data/events/social_stream-events.gemspec +3 -3
  41. data/lib/social_stream/version.rb +1 -1
  42. data/linkser/app/assets/javascripts/linkser.js.erb +1 -1
  43. data/linkser/lib/social_stream/linkser/version.rb +1 -1
  44. data/linkser/social_stream-linkser.gemspec +1 -1
  45. data/linkser/spec/dummy/config/initializers/devise.rb +1 -1
  46. data/presence/app/assets/javascripts/chat_interface_manager.js.erb +5 -5
  47. data/presence/app/assets/javascripts/xmpp_client_management.js.erb +3 -3
  48. data/presence/lib/social_stream/presence/models/buddy_manager.rb +43 -47
  49. data/presence/lib/social_stream/presence/version.rb +1 -1
  50. data/presence/social_stream-presence.gemspec +1 -1
  51. data/social_stream.gemspec +8 -6
  52. data/spec/dummy/config/initializers/devise.rb +1 -1
  53. data/spec/support/db.rb +6 -0
  54. metadata +44 -29
@@ -1,5 +1,3 @@
1
- require 'active_support/concern'
2
-
3
1
  module SocialStream
4
2
  module Models
5
3
  # {Subject Subjects} are subtypes of {Actor Actors}. {SocialStream Social Stream} provides two
@@ -75,12 +73,6 @@ module SocialStream
75
73
  end
76
74
  end
77
75
 
78
- module InstanceMethods
79
- def to_param
80
- slug
81
- end
82
- end
83
-
84
76
  module ClassMethods
85
77
  def find_by_slug(perm)
86
78
  includes(:actor).where('actors.slug' => perm).first
@@ -91,6 +83,10 @@ module SocialStream
91
83
  raise(ActiveRecord::RecordNotFound)
92
84
  end
93
85
  end
86
+
87
+ def to_param
88
+ slug
89
+ end
94
90
  end
95
91
  end
96
92
  end
@@ -1,9 +1,21 @@
1
- require 'active_support/concern'
2
-
3
1
  module SocialStream #:nodoc:
4
2
  module Models
5
3
  # Common methods for models that have a {SocialStream::Models::Supertype}
6
4
  module Subtype
5
+ # Add the class method {#subtype_of} to ActiveRecord::Base
6
+ module ActiveRecord
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods
10
+ # This class is a subtype. Its supertype class is name
11
+ def subtype_of name, options = {}
12
+ @supertype_name = name
13
+ @supertype_options = options
14
+ include SocialStream::Models::Subtype
15
+ end
16
+ end
17
+ end
18
+
7
19
  extend ActiveSupport::Concern
8
20
 
9
21
  included do
@@ -37,43 +49,33 @@ module SocialStream #:nodoc:
37
49
  end
38
50
  end
39
51
 
40
- module InstanceMethods
41
- # Delegate missing methods to supertype, if they exist there
42
- def method_missing(method, *args, &block)
43
- super
44
- rescue NameError => subtype_error
45
- # These methods must be raised to avoid loops
46
- # (the @supertype_name association (i.e. :actor) calls here again)
47
- exceptions = [ "_#{ self.class.supertype_foreign_key }".to_sym ] # [ :_actor_id ]
48
- raise subtype_error if exceptions.include?(method)
52
+ # Delegate missing methods to supertype, if they exist there
53
+ def method_missing(method, *args, &block)
54
+ super
55
+ rescue NameError => subtype_error
56
+ raise subtype_error unless _delegate_to_supertype?(:method)
49
57
 
50
- begin
51
- supertype!.__send__ method, *args, &block
52
- # We rescue supertype's NameErrors so methods not defined are raised from
53
- # the subtype. Example: user.foo should raise "foo is not defined in user"
54
- # and not "in actor"
55
- rescue NameError => supertype_error
56
- raise subtype_error
57
- end
58
+ begin
59
+ supertype!.__send__ method, *args, &block
60
+ # We rescue supertype's NameErrors so methods not defined are raised from
61
+ # the subtype. Example: user.foo should raise "foo is not defined in user"
62
+ # and not "in actor"
63
+ rescue NameError => supertype_error
64
+ raise subtype_error
58
65
  end
59
-
60
- # {SocialStream::Models::Supertype} handles some methods
61
- def respond_to? *args
62
- super || supertype!.respond_to?(*args)
63
- end
64
66
  end
65
67
 
66
- module ActiveRecord
67
- extend ActiveSupport::Concern
68
+ # {SocialStream::Models::Supertype} handles some methods
69
+ def respond_to? *args
70
+ super || _delegate_to_supertype?(:method) && supertype!.respond_to?(*args)
71
+ end
68
72
 
69
- module ClassMethods
70
- # This class is a subtype. Its supertype class is name
71
- def subtype_of name, options = {}
72
- @supertype_name = name
73
- @supertype_options = options
74
- include SocialStream::Models::Subtype
75
- end
76
- end
73
+ def _delegate_to_supertype?(method)
74
+ # These methods must not be delegated to avoid loops
75
+ # (the @supertype_name association (e.g. :actor) calls here again)
76
+ exceptions = [ "_#{ self.class.supertype_foreign_key }".to_sym ] # [ :_actor_id ]
77
+
78
+ ! exceptions.include?(method)
77
79
  end
78
80
  end
79
81
  end
@@ -1,5 +1,3 @@
1
- require 'active_support/concern'
2
-
3
1
  module SocialStream #:nodoc:
4
2
  module Models
5
3
  # Common methods for models having many {SocialStream::Models::Subtype subtypes}.
@@ -7,6 +5,18 @@ module SocialStream #:nodoc:
7
5
  # * {Actor}: participates in the social network and has {Tie Ties} with other actors. Its subtypes are {SocialStream::Models::Subject subjects}, such as {User} or {Group}
8
6
  # * {ActivityObject}: created and managed by {Actor Actors} in {Activity Activities}. Its subtypes are {SocialStream::Models::Object objects}, like {Post} or {Comment}
9
7
  module Supertype
8
+ # Include the class method {#supertype_of} to ActiveRecord::Base
9
+ module ActiveRecord
10
+ extend ActiveSupport::Concern
11
+
12
+ module ClassMethods
13
+ # This class is a supertype. Subtype classes are known as name
14
+ def supertype_of name
15
+ @subtypes_name = name
16
+ include SocialStream::Models::Supertype
17
+ end
18
+ end
19
+ end
10
20
  extend ActiveSupport::Concern
11
21
 
12
22
  included do
@@ -25,25 +35,11 @@ module SocialStream #:nodoc:
25
35
  end
26
36
  end
27
37
 
28
- module InstanceMethods
29
- def subtype_instance
30
- if __send__("#{ self.class.subtypes_name }_type").present? # if object_type.present?
31
- object_class = __send__("#{ self.class.subtypes_name }_type") # object_class = object_type # => "Video"
32
- __send__ object_class.constantize.base_class.to_s.underscore # __send__ "document"
33
- end # end
34
- end
35
- end
36
-
37
- module ActiveRecord
38
- extend ActiveSupport::Concern
39
-
40
- module ClassMethods
41
- # This class is a supertype. Subtype classes are known as name
42
- def supertype_of name
43
- @subtypes_name = name
44
- include SocialStream::Models::Supertype
45
- end
46
- end
38
+ def subtype_instance
39
+ if __send__("#{ self.class.subtypes_name }_type").present? # if object_type.present?
40
+ object_class = __send__("#{ self.class.subtypes_name }_type") # object_class = object_type # => "Video"
41
+ __send__ object_class.constantize.base_class.to_s.underscore # __send__ "document"
42
+ end # end
47
43
  end
48
44
  end
49
45
  end
@@ -131,13 +131,21 @@ namespace :db do
131
131
  actor = Actor.first
132
132
  unless a==actor
133
133
  puts a.name + " connecting with " + actor.name
134
- a.contact_to!(actor).relation_ids = Array(Forgery::Extensions::Array.new(a.relation_customs).random.id)
135
- actor.contact_to!(a).relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
134
+ # DRY! :-S
135
+ contact = a.contact_to!(actor)
136
+ contact.user_author = a.user_author if a.subject_type != "User"
137
+ contact.relation_ids = Array(Forgery::Extensions::Array.new(a.relation_customs).random.id)
138
+
139
+ contact = actor.contact_to!(a)
140
+ contact.user_author = actor.user_author if actor.subject_type != "User"
141
+ contact.relation_ids = Array(Forgery::Extensions::Array.new(actor.relation_customs).random.id)
136
142
  end
137
143
  else
138
144
  Forgery::Basic.number(:at_most => actors.size).times do
139
145
  actor = actors.delete_at((rand * actors.size).to_i)
140
- a.contact_to!(actor).relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
146
+ contact = a.contact_to!(actor)
147
+ contact.user_author = a.user_author if a.subject_type != "User"
148
+ contact.relation_ids = Array(Forgery::Extensions::Array.new(relations).random.id) unless a==actor
141
149
  end
142
150
  end
143
151
  end
@@ -16,13 +16,13 @@ Gem::Specification.new do |s|
16
16
  # Do not forget to require the file at lib/social_stream/base/dependencies !
17
17
  #
18
18
  # Rails
19
- s.add_runtime_dependency('rails', '~> 3.1.0')
19
+ s.add_runtime_dependency('rails', '>= 3.1.0')
20
20
  # Activity and Relation hierarchies
21
21
  s.add_runtime_dependency('ancestry', '~> 1.2.3')
22
22
  # SQL foreign keys
23
23
  s.add_runtime_dependency('foreigner', '~> 1.1.1')
24
24
  # Authentication
25
- s.add_runtime_dependency('devise', '~> 1.4.5')
25
+ s.add_runtime_dependency('devise', '~> 1.5.3')
26
26
  # CRUD controllers
27
27
  s.add_runtime_dependency('inherited_resources', '~> 1.3.0')
28
28
  # Slug generation
@@ -36,11 +36,13 @@ Gem::Specification.new do |s|
36
36
  # Pagination
37
37
  s.add_runtime_dependency('kaminari', '~> 0.13.0')
38
38
  # OAuth client
39
- s.add_runtime_dependency('omniauth','~> 0.2.6')
39
+ s.add_runtime_dependency('omniauth','~> 1.0.2')
40
+ s.add_runtime_dependency('omniauth-facebook','~> 1.2.0')
41
+ s.add_runtime_dependency('omniauth-linkedin','~> 0.0.6')
40
42
  # Messages
41
43
  s.add_runtime_dependency('mailboxer','~> 0.6.0')
42
44
  # Tagging
43
- s.add_runtime_dependency('acts-as-taggable-on','~> 2.0.6')
45
+ s.add_runtime_dependency('acts-as-taggable-on','~> 2.2.2')
44
46
  # HTML Forms
45
47
  s.add_runtime_dependency('formtastic','~> 1.2.3')
46
48
  # Simple navigation for menu
@@ -52,11 +54,13 @@ Gem::Specification.new do |s|
52
54
  # Sphinx search engine
53
55
  s.add_runtime_dependency('thinking-sphinx', '~> 2.0.8')
54
56
  # Syntactically Awesome Stylesheets
55
- s.add_runtime_dependency('sass-rails', '~> 3.1.0')
57
+ s.add_runtime_dependency('sass-rails', '>= 3.1.0')
56
58
  # Autolink text blocks
57
59
  s.add_runtime_dependency('rails_autolink', '~> 1.0.4')
58
60
  # SocialCheesecake
59
61
  s.add_runtime_dependency('social_cheesecake','~> 0.2.0')
62
+ # I18n-js
63
+ s.add_runtime_dependency('i18n-js','~>2.1.2')
60
64
 
61
65
  # Development gem dependencies
62
66
  #
@@ -198,7 +198,7 @@ Devise.setup do |config|
198
198
  # Add a new OmniAuth provider. Check the wiki for more information on setting
199
199
  # up on your models and hooks.
200
200
  # config.omniauth :github, 'APP_ID', 'APP_SECRET', :scope => 'user,public_repo'
201
- config.omniauth :linked_in, "ekxfXU8nueVSMQ9fc5KJAryBkyztUlCBYMW3DoQPzbE79WhivvzhQloRNHCHgPeB", "WYiHFT-KKFgjd45W3-pEAficmXRHmN6_6DGwj1C_ZILJlSO1gBvv6VNYXU9tybGY"
201
+ config.omniauth :linkedin, "ekxfXU8nueVSMQ9fc5KJAryBkyztUlCBYMW3DoQPzbE79WhivvzhQloRNHCHgPeB", "WYiHFT-KKFgjd45W3-pEAficmXRHmN6_6DGwj1C_ZILJlSO1gBvv6VNYXU9tybGY"
202
202
 
203
203
  config.omniauth :facebook, "129571360447856","eef39dce5e20e76f77495c59623bdb38"
204
204
 
@@ -34,7 +34,7 @@ $(document).ready(function(){
34
34
  var comments = $(this).children(".subactivity");
35
35
  if (comments.size() > 5){
36
36
  $(this).prepend("<div class='hide_show_comments'><a href='#' onclick='showAllDocumentComments(\""+
37
- $(this).attr('id') +"\"); return false;'><%= I18n.t('comment.view_all') %> (" +
37
+ $(this).attr('id') +"\"); return false;'>" + I18n.t('comment.view_all') + "(" +
38
38
  comments.size() + ")</a></div><div class='space_comments'></div>");
39
39
  comments.slice(0,comments.size()-5).hide();
40
40
  //hide alto space_comments
@@ -0,0 +1,18 @@
1
+ # Monkey-patch https://github.com/jstorimer/delayed_paperclip/commit/3e0e3451147e96f378cda4695546d9633944cc5c
2
+ #
3
+ # Remove with delayed_paperclip > 2.4.5.1
4
+ require 'delayed_paperclip'
5
+
6
+ module DelayedPaperclip::Attachment::InstanceMethods
7
+ def post_process_styles_with_processing(*args)
8
+ post_process_styles_without_processing(*args)
9
+
10
+ # update_column is available in rails 3.1 instead we can do this to update the attribute without callbacks
11
+
12
+ #instance.update_column("#{name}_processing", false) if instance.respond_to?(:"#{name}_processing?")
13
+ if instance.respond_to?(:"#{name}_processing?")
14
+ instance.send("#{name}_processing=", false)
15
+ instance.class.update_all({ "#{name}_processing" => false }, instance.class.primary_key => instance.id)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,48 @@
1
+ # Monkey patch https://github.com/thoughtbot/paperclip/issues/293#issuecomment-2484541
2
+ #
3
+ # Remove with paperclip > 2.5.0
4
+ require 'paperclip'
5
+
6
+ module Paperclip::ClassMethods
7
+ def has_attached_file name, options = {}
8
+ include Paperclip::InstanceMethods
9
+
10
+ if attachment_definitions.nil?
11
+ if respond_to?(:class_attribute)
12
+ self.attachment_definitions = {}
13
+ else
14
+ write_inheritable_attribute(:attachment_definitions, {})
15
+ end
16
+ else
17
+ self.attachment_definitions = self.attachment_definitions.dup
18
+ end
19
+
20
+ attachment_definitions[name] = {:validations => []}.merge(options)
21
+ Paperclip.classes_with_attachments << self.name
22
+ Paperclip.check_for_url_clash(name,attachment_definitions[name][:url],self.name)
23
+
24
+ after_save :save_attached_files
25
+ before_destroy :prepare_for_destroy
26
+ after_destroy :destroy_attached_files
27
+
28
+ define_paperclip_callbacks :post_process, :"#{name}_post_process"
29
+
30
+ define_method name do |*args|
31
+ a = attachment_for(name)
32
+ (args.length > 0) ? a.to_s(args.first) : a
33
+ end
34
+
35
+ define_method "#{name}=" do |file|
36
+ attachment_for(name).assign(file)
37
+ end
38
+
39
+ define_method "#{name}?" do
40
+ attachment_for(name).file?
41
+ end
42
+
43
+ validates_each(name) do |record, attr, value|
44
+ attachment = record.attachment_for(name)
45
+ attachment.send(:flush_errors)
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,4 @@
1
- require 'social_stream-base'
2
- require 'delayed_paperclip'
1
+ require 'social_stream/documents/dependencies'
3
2
 
4
3
  module SocialStream
5
4
  module ToolbarConfig
@@ -20,6 +19,4 @@ module SocialStream
20
19
  end
21
20
  end
22
21
 
23
- #require 'paperclip_processors/ffmpeg'
24
- require 'paperclip-ffmpeg'
25
22
  require 'social_stream/documents/engine'
@@ -0,0 +1,6 @@
1
+ require 'social_stream-base'
2
+ require 'paperclip'
3
+ require 'paperclip/social_stream-documents'
4
+ require 'paperclip-ffmpeg'
5
+ require 'delayed_paperclip'
6
+ require 'delayed_paperclip/social_stream-documents'
@@ -5,9 +5,7 @@ module SocialStream
5
5
  initializer "social_stream-documents.register_mime_types" do
6
6
  # Documents
7
7
  Mime::Type.register "text/plain", :txt
8
- Mime::Type.register "application/zip", :zip
9
8
  Mime::Type.register "application/x-rar", :rar
10
- Mime::Type.register "application/pdf", :pdf
11
9
  Mime::Type.register "application/postscript", :ps, [ "application/ps" ]
12
10
  Mime::Type.register "application/vnd.oasis.opendocument.text", :odt
13
11
  Mime::Type.register "application/vnd.oasis.opendocument.presentation", :odp
@@ -17,19 +15,38 @@ module SocialStream
17
15
  Mime::Type.register "application/vnd.ms-excel", :xls, [ "application/msexcel" ]
18
16
  Mime::Type.register "application/rtf", :rtf
19
17
  Mime::Type.register "application/vnd.scribus", :sla
18
+ # These are already defined in Rails 3.2
19
+ unless defined? Mime::ZIP
20
+ Mime::Type.register "application/zip", :zip
21
+ end
22
+ unless defined? Mime::PDF
23
+ Mime::Type.register "application/pdf", :pdf
24
+ end
20
25
 
21
26
  # Picture
22
- Mime::Type.register "image/jpeg", :jpeg, ["image/pjpeg","image/jpg"]
23
- Mime::Type.register "image/gif", :gif
24
- Mime::Type.register "image/png", :png, [ "image/x-png" ]
25
- Mime::Type.register "image/bmp", :bmp
26
27
  Mime::Type.register "image/x-xcf", :xcf
28
+ # These are already defined in Rails 3.2
29
+ unless defined? Mime::JPEG
30
+ Mime::Type.register "image/jpeg", :jpeg, ["image/pjpeg","image/jpg"]
31
+ end
32
+ unless defined? Mime::GIF
33
+ Mime::Type.register "image/gif", :gif
34
+ end
35
+ unless defined? Mime::PNG
36
+ Mime::Type.register "image/png", :png, [ "image/x-png" ]
37
+ end
38
+ unless defined? Mime::BMP
39
+ Mime::Type.register "image/bmp", :bmp
40
+ end
27
41
 
28
42
  # Audio
29
43
  Mime::Type.register "audio/x-wav", :wav, [ "audio/wav" ]
30
- Mime::Type.register "audio/mpeg", :mpeg
31
44
  Mime::Type.register "audio/x-vorbis+ogg", :ogg, [ "application/ogg" ]
32
45
  Mime::Type.register "audio/webm", :webma
46
+ # These are already defined in Rails 3.2
47
+ unless defined? Mime::MPEG
48
+ Mime::Type.register "audio/mpeg", :mpeg
49
+ end
33
50
 
34
51
  # Video
35
52
  Mime::Type.register "video/x-flv", :flv
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Documents
3
- VERSION = "0.8.2".freeze
3
+ VERSION = "0.9.0".freeze
4
4
  end
5
5
  end
@@ -12,12 +12,10 @@ Gem::Specification.new do |s|
12
12
  s.files = `git ls-files`.split("\n")
13
13
 
14
14
  # Gem dependencies
15
- s.add_runtime_dependency('social_stream-base', '~> 0.13.2')
15
+ s.add_runtime_dependency('social_stream-base', '~> 0.14.0')
16
16
  s.add_runtime_dependency('paperclip-ffmpeg', '~> 0.7.0')
17
- # Waiting for version > 2.4.5, which fixes:
18
- # https://github.com/thoughtbot/paperclip/issues/293
19
- s.add_runtime_dependency('paperclip','2.3.11')
20
- s.add_runtime_dependency('delayed_paperclip','0.7.2')
17
+ s.add_runtime_dependency('paperclip','= 2.4.5')
18
+ s.add_runtime_dependency('delayed_paperclip','2.4.5.1')
21
19
  # Development Gem dependencies
22
20
  s.add_development_dependency('sqlite3-ruby')
23
21
  if RUBY_VERSION < '1.9'
@@ -160,7 +160,7 @@ Devise.setup do |config|
160
160
  # Add a new OmniAuth provider. Check the wiki for more information on setting
161
161
  # up on your models and hooks.
162
162
  # config.omniauth :github, 'APP_ID', 'APP_SECRET', :scope => 'user,public_repo'
163
- config.omniauth :linked_in, "ekxfXU8nueVSMQ9fc5KJAryBkyztUlCBYMW3DoQPzbE79WhivvzhQloRNHCHgPeB", "WYiHFT-KKFgjd45W3-pEAficmXRHmN6_6DGwj1C_ZILJlSO1gBvv6VNYXU9tybGY"
163
+ config.omniauth :linkedin, "ekxfXU8nueVSMQ9fc5KJAryBkyztUlCBYMW3DoQPzbE79WhivvzhQloRNHCHgPeB", "WYiHFT-KKFgjd45W3-pEAficmXRHmN6_6DGwj1C_ZILJlSO1gBvv6VNYXU9tybGY"
164
164
 
165
165
  config.omniauth :facebook, "129571360447856","eef39dce5e20e76f77495c59623bdb38"
166
166