intercom-rails 0.0.8 → 0.0.9

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.
@@ -1,3 +1,6 @@
1
+ require 'intercom-rails/exceptions'
2
+ require 'intercom-rails/current_user'
3
+ require 'intercom-rails/script_tag'
1
4
  require 'intercom-rails/script_tag_helper'
2
5
  require 'intercom-rails/auto_include_filter'
3
6
  require 'intercom-rails/config'
@@ -2,7 +2,6 @@ module IntercomRails
2
2
 
3
3
  class AutoIncludeFilter
4
4
 
5
- include ScriptTagHelper
6
5
  CLOSING_BODY_TAG = %r{</body>}
7
6
 
8
7
  def self.filter(controller)
@@ -19,15 +18,14 @@ module IntercomRails
19
18
  end
20
19
 
21
20
  def include_javascript!
22
- response.body = response.body.gsub(CLOSING_BODY_TAG, intercom_script_tag + '\\0')
21
+ response.body = response.body.gsub(CLOSING_BODY_TAG, intercom_script_tag.output + '\\0')
23
22
  end
24
23
 
25
24
  def include_javascript?
26
25
  !intercom_script_tag_called_manually? &&
27
26
  html_content_type? &&
28
27
  response_has_closing_body_tag? &&
29
- intercom_app_id.present? &&
30
- intercom_user_object.present?
28
+ intercom_script_tag.valid?
31
29
  end
32
30
 
33
31
  private
@@ -47,44 +45,8 @@ module IntercomRails
47
45
  controller.instance_variable_get(SCRIPT_TAG_HELPER_CALLED_INSTANCE_VARIABLE)
48
46
  end
49
47
 
50
- POTENTIAL_INTERCOM_USER_OBJECTS = [
51
- Proc.new { instance_eval &IntercomRails.config.current_user if IntercomRails.config.current_user.present? },
52
- Proc.new { current_user },
53
- Proc.new { @user }
54
- ]
55
-
56
- def intercom_user_object
57
- POTENTIAL_INTERCOM_USER_OBJECTS.each do |potential_user|
58
- begin
59
- user = controller.instance_eval &potential_user
60
- return user if user.present? &&
61
- (user.email.present? || user.id.present?)
62
- rescue NameError
63
- next
64
- end
65
- end
66
-
67
- nil
68
- end
69
-
70
- def intercom_app_id
71
- return ENV['INTERCOM_APP_ID'] if ENV['INTERCOM_APP_ID'].present?
72
- return IntercomRails.config.app_id if IntercomRails.config.app_id.present?
73
- return 'abcd1234' if defined?(Rails) && Rails.env.development?
74
-
75
- nil
76
- end
77
-
78
48
  def intercom_script_tag
79
- user_details = {:app_id => intercom_app_id}
80
- user = intercom_user_object
81
-
82
- user_details[:user_id] = user.id if user.respond_to?(:id) && user.id.present?
83
- [:email, :name, :created_at].each do |attribute|
84
- user_details[attribute] = user.send(attribute) if user.respond_to?(attribute) && user.send(attribute).present?
85
- end
86
-
87
- super(user_details)
49
+ @script_tag ||= ScriptTag.new(:find_current_user_details => true, :controller => controller)
88
50
  end
89
51
 
90
52
  end
@@ -49,6 +49,16 @@ module IntercomRails
49
49
  @user_model
50
50
  end
51
51
 
52
+ # Widget options
53
+ def self.inbox=(value)
54
+ raise ArgumentError, "inbox must be one of :default or :custom" unless [:default, :custom].include?(value)
55
+ @inbox = value
56
+ end
57
+
58
+ def self.inbox
59
+ @inbox
60
+ end
61
+
52
62
  end
53
63
 
54
64
  end
@@ -0,0 +1,53 @@
1
+ module IntercomRails
2
+
3
+ class CurrentUser
4
+
5
+ POTENTIAL_USER_OBJECTS = [
6
+ Proc.new { instance_eval &IntercomRails.config.current_user if IntercomRails.config.current_user.present? },
7
+ Proc.new { current_user },
8
+ Proc.new { @user }
9
+ ]
10
+
11
+ def self.locate_and_prepare_for_intercom(*args)
12
+ new(*args).to_hash
13
+ end
14
+
15
+ attr_reader :search_object, :user
16
+
17
+ def initialize(search_object)
18
+ @search_object = search_object
19
+ @user = find_user
20
+ end
21
+
22
+ def find_user
23
+ POTENTIAL_USER_OBJECTS.each do |potential_user|
24
+ begin
25
+ user = search_object.instance_eval &potential_user
26
+ return user if user.present? &&
27
+ (user.email.present? || user.id.present?)
28
+ rescue NameError
29
+ next
30
+ end
31
+ end
32
+
33
+ raise CurrentUserNotFoundError
34
+ end
35
+
36
+ def to_hash
37
+ hsh = {}
38
+ hsh[:user_id] = user.id if attribute_present?(:id)
39
+ [:email, :name, :created_at].each do |attribute|
40
+ hsh[attribute] = user.send(attribute) if attribute_present?(attribute)
41
+ end
42
+
43
+ hsh
44
+ end
45
+
46
+ private
47
+ def attribute_present?(attribute)
48
+ user.respond_to?(attribute) && user.send(attribute).present?
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,9 @@
1
+ module IntercomRails
2
+
3
+ class Error < StandardError; end
4
+
5
+ class CurrentUserNotFoundError < Error; end
6
+ class ImportError < Error; end
7
+ class IntercomAPIError < Error; end
8
+
9
+ end
@@ -3,8 +3,6 @@ require 'json'
3
3
  require 'uri'
4
4
 
5
5
  module IntercomRails
6
- class ImportError < StandardError; end
7
- class IntercomAPIError < StandardError; end
8
6
 
9
7
  class Import
10
8
 
@@ -0,0 +1,111 @@
1
+ require "active_support/json"
2
+ require "active_support/core_ext/hash/indifferent_access"
3
+
4
+ module IntercomRails
5
+
6
+ class ScriptTag
7
+
8
+ def self.generate(*args)
9
+ new(*args).output
10
+ end
11
+
12
+ attr_reader :user_details
13
+ attr_accessor :secret, :widget_options, :controller
14
+
15
+ def initialize(options = {})
16
+ self.secret = options[:secret] || Config.api_secret
17
+ self.widget_options = options[:widget] || widget_options_from_config
18
+ self.controller = options[:controller]
19
+ self.user_details = options[:find_current_user_details] ? find_current_user_details : options[:user_details]
20
+ end
21
+
22
+ def valid?
23
+ user_details[:app_id].present? && (user_details[:user_id] || user_details[:email]).present?
24
+ end
25
+
26
+ def intercom_settings
27
+ options = {}
28
+ options[:widget] = widget_options if widget_options.present?
29
+
30
+ user_details.merge(options)
31
+ end
32
+
33
+ def output
34
+ str = <<-INTERCOM_SCRIPT
35
+ <script id="IntercomSettingsScriptTag">
36
+ var intercomSettings = #{ActiveSupport::JSON.encode(intercom_settings)};
37
+ </script>
38
+ <script>
39
+ (function() {
40
+ function async_load() {
41
+ var s = document.createElement('script');
42
+ s.type = 'text/javascript'; s.async = true;
43
+ s.src = 'https://api.intercom.io/api/js/library.js';
44
+ var x = document.getElementsByTagName('script')[0];
45
+ x.parentNode.insertBefore(s, x);
46
+ }
47
+ if (window.attachEvent) {
48
+ window.attachEvent('onload', async_load);
49
+ } else {
50
+ window.addEventListener('load', async_load, false);
51
+ }
52
+ })();
53
+ </script>
54
+ INTERCOM_SCRIPT
55
+
56
+ str.respond_to?(:html_safe) ? str.html_safe : str
57
+ end
58
+
59
+ private
60
+ def user_details=(user_details)
61
+ @user_details = convert_dates_to_unix_timestamps(user_details || {})
62
+ @user_details = @user_details.with_indifferent_access.tap do |u|
63
+ [:email, :name, :user_id].each { |k| u.delete(k) if u[k].nil? }
64
+
65
+ u[:user_hash] ||= user_hash if secret.present?
66
+ u[:app_id] ||= app_id
67
+ end
68
+ end
69
+
70
+ def find_current_user_details
71
+ return {} unless controller.present?
72
+ CurrentUser.locate_and_prepare_for_intercom(controller)
73
+ rescue CurrentUserNotFoundError
74
+ {}
75
+ end
76
+
77
+ def user_hash
78
+ components = [secret, (user_details[:user_id] || user_details[:email])]
79
+ Digest::SHA1.hexdigest(components.join)
80
+ end
81
+
82
+ def app_id
83
+ return ENV['INTERCOM_APP_ID'] if ENV['INTERCOM_APP_ID'].present?
84
+ return IntercomRails.config.app_id if IntercomRails.config.app_id.present?
85
+ return 'abcd1234' if defined?(Rails) && Rails.env.development?
86
+
87
+ nil
88
+ end
89
+
90
+ def widget_options_from_config
91
+ return nil unless Config.inbox
92
+
93
+ activator = case Config.inbox
94
+ when :default
95
+ '#IntercomDefaultWidget'
96
+ when :custom
97
+ '#Intercom'
98
+ end
99
+
100
+ {:activator => activator}
101
+ end
102
+
103
+ def convert_dates_to_unix_timestamps(object)
104
+ return Hash[object.map { |k, v| [k, convert_dates_to_unix_timestamps(v)] }] if object.is_a?(Hash)
105
+ return object.strftime('%s').to_i if object.respond_to?(:strftime)
106
+ object
107
+ end
108
+
109
+ end
110
+
111
+ end
@@ -1,74 +1,39 @@
1
- require "active_support/json"
2
- require "active_support/core_ext/hash/indifferent_access"
3
-
4
1
  module IntercomRails
5
- # Helper methods for generating Intercom javascript script tags.
6
2
  SCRIPT_TAG_HELPER_CALLED_INSTANCE_VARIABLE = :@_intercom_script_tag_helper_called
7
3
 
8
4
  module ScriptTagHelper
5
+ # Generate an intercom script tag.
6
+ #
9
7
  # @param user_details [Hash] a customizable hash of user details
10
8
  # @param options [Hash] an optional hash for secure mode and widget customisation
11
- # @option user_details [String] :app_id Your application id (get it here)
9
+ # @option user_details [String] :app_id Your application id
12
10
  # @option user_details [String] :user_id unique id of this user within your application
13
11
  # @option user_details [String] :email email address for this user
14
12
  # @option user_details [String] :name the users name, _optional_ but useful for identify people in the Intercom App.
15
- # @option user_details [Hash] :custom_data custom attributes you'd like saved for this user on Intercom. See
16
- # @option options [String] :activator a css selector for an element which when clicked should show the Intercom widget
13
+ # @option user_details [Hash] :custom_data custom attributes you'd like saved for this user on Intercom.
14
+ # @option options [String] :widget a hash containing a css selector for an element which when clicked should show the Intercom widget
15
+ # @option options [String] :secret Your app secret for secure mode
17
16
  # @return [String] Intercom script tag
18
17
  # @example basic example
19
18
  # <%= intercom_script_tag({ :app_id => "your-app-id",
20
19
  # :user_id => current_user.id,
21
20
  # :email => current_user.email,
22
21
  # :custom_data => { :plan => current_user.plan.name },
23
- # :name => current_user.name }
24
- # ) %>
22
+ # :name => current_user.name }) %>
25
23
  # @example with widget activator for launching then widget when an element matching the css selector '#Intercom' is clicked.
26
24
  # <%= intercom_script_tag({ :app_id => "your-app-id",
27
25
  # :user_id => current_user.id,
28
26
  # :email => current_user.email,
29
27
  # :custom_data => { :plan => current_user.plan.name },
30
- # :name => current_user.name }
31
- # {:activator => "#Intercom"}
32
- # ) %>
33
- def intercom_script_tag(user_details, options={})
34
- if options[:secret]
35
- secret_string = "#{options[:secret]}#{user_details[:user_id].blank? ? user_details[:email] : user_details[:user_id]}"
36
- user_details[:user_hash] = Digest::SHA1.hexdigest(secret_string)
37
- end
38
- intercom_settings = user_details.merge({:widget => options[:widget]}).with_indifferent_access
39
- intercom_settings_with_dates_as_timestamps = convert_dates_to_unix_timestamps(intercom_settings)
40
- intercom_settings_with_dates_as_timestamps.reject! { |key, value| %w(email name user_id).include?(key.to_s) && value.nil? }
41
- intercom_script = <<-INTERCOM_SCRIPT
42
- <script id="IntercomSettingsScriptTag">
43
- var intercomSettings = #{ActiveSupport::JSON.encode(intercom_settings_with_dates_as_timestamps)};
44
- </script>
45
- <script>
46
- (function() {
47
- function async_load() {
48
- var s = document.createElement('script');
49
- s.type = 'text/javascript'; s.async = true;
50
- s.src = 'https://api.intercom.io/api/js/library.js';
51
- var x = document.getElementsByTagName('script')[0];
52
- x.parentNode.insertBefore(s, x);
53
- }
54
- if (window.attachEvent) {
55
- window.attachEvent('onload', async_load);
56
- } else {
57
- window.addEventListener('load', async_load, false);
58
- }
59
- })();
60
- </script>
61
- INTERCOM_SCRIPT
62
-
28
+ # :name => current_user.name },
29
+ # {:widget => {:activator => "#Intercom"}},) %>
30
+ def intercom_script_tag(user_details = nil, options={})
63
31
  controller.instance_variable_set(IntercomRails::SCRIPT_TAG_HELPER_CALLED_INSTANCE_VARIABLE, true) if defined?(controller)
64
- intercom_script.respond_to?(:html_safe) ? intercom_script.html_safe : intercom_script
65
- end
32
+ options[:user_details] = user_details if user_details.present?
33
+ options[:find_current_user_details] = !options[:user_details]
34
+ options[:controller] = controller if defined?(controller)
66
35
 
67
- private
68
- def convert_dates_to_unix_timestamps(object)
69
- return Hash[object.map { |k, v| [k, convert_dates_to_unix_timestamps(v)] }] if object.is_a?(Hash)
70
- return object.strftime('%s').to_i if object.respond_to?(:strftime)
71
- object
36
+ ScriptTag.generate(options)
72
37
  end
73
38
  end
74
39
  end
@@ -1,3 +1,3 @@
1
1
  module IntercomRails
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -33,4 +33,15 @@ IntercomRails.config do |config|
33
33
  # The class which defines your user model
34
34
  #
35
35
  # config.user_model = Proc.new { User }
36
+
37
+ # == Inbox
38
+ # This enables the Intercom inbox which allows your users to read their
39
+ # past conversations with your app, as well as start new ones.
40
+ # * :default shows a small tab with a question mark icon on it
41
+ # * :custom attaches the inbox open event to an anchor with an
42
+ # id of #Intercom.
43
+ #
44
+ # config.inbox = :default
45
+ # config.inbox = :custom
46
+
36
47
  end
@@ -3,13 +3,6 @@ require 'test_setup'
3
3
  require 'action_controller'
4
4
  require 'action_controller/test_case'
5
5
 
6
- def dummy_user(options = {})
7
- user = Struct.new(:email, :name).new
8
- user.email = options[:email] || 'ben@intercom.io'
9
- user.name = options[:name] || 'Ben McRedmond'
10
- user
11
- end
12
-
13
6
  TestRoutes = ActionDispatch::Routing::RouteSet.new
14
7
  TestRoutes.draw do
15
8
  get ':controller(/:action)'
@@ -83,6 +83,14 @@ class AutoIncludeFilterTest < ActionController::TestCase
83
83
  assert_includes @response.body, "Eoghan McCabe"
84
84
  end
85
85
 
86
+ def test_auto_insert_with_api_secret_set
87
+ IntercomRails.config.api_secret = 'abcd'
88
+ get :with_current_user_method, :body => "<body>Hello world</body>"
89
+ assert_includes @response.body, "<script>"
90
+ assert_includes @response.body, "user_hash"
91
+ assert_includes @response.body, Digest::SHA1.hexdigest('abcd' + @controller.current_user.email)
92
+ end
93
+
86
94
  def test_no_app_id_present
87
95
  ENV.delete('INTERCOM_APP_ID')
88
96
  get :with_current_user_method, :body => "<body>Hello world</body>"
@@ -0,0 +1,54 @@
1
+ require 'test_setup'
2
+
3
+ class CurrentUserTest < MiniTest::Unit::TestCase
4
+
5
+ include IntercomRails
6
+
7
+ DUMMY_USER = dummy_user(:email => 'ciaran@intercom.io', :name => 'Ciaran Lee')
8
+
9
+ def test_raises_error_when_no_user_found
10
+ assert_raises(IntercomRails::CurrentUserNotFoundError) {
11
+ CurrentUser.new(Object.new)
12
+ }
13
+ end
14
+
15
+ def test_finds_current_user
16
+ object_with_current_user_method = Object.new
17
+ object_with_current_user_method.instance_eval do
18
+ def current_user
19
+ DUMMY_USER
20
+ end
21
+ end
22
+
23
+ @current_user = CurrentUser.new(object_with_current_user_method)
24
+ assert_user_found
25
+ end
26
+
27
+ def test_finds_user_instance_variable
28
+ object_with_instance_variable = Object.new
29
+ object_with_instance_variable.instance_eval do
30
+ @user = DUMMY_USER
31
+ end
32
+
33
+ @current_user = CurrentUser.new(object_with_instance_variable)
34
+ assert_user_found
35
+ end
36
+
37
+ def test_finds_config_user
38
+ object_from_config = Object.new
39
+ object_from_config.instance_eval do
40
+ def something_esoteric
41
+ DUMMY_USER
42
+ end
43
+ end
44
+
45
+ IntercomRails.config.current_user = Proc.new { something_esoteric }
46
+ @current_user = CurrentUser.new(object_from_config)
47
+ assert_user_found
48
+ end
49
+
50
+ def assert_user_found
51
+ assert_equal DUMMY_USER, @current_user.user
52
+ end
53
+
54
+ end
@@ -4,28 +4,17 @@ require 'test_setup'
4
4
  class ScriptTagHelperTest < MiniTest::Unit::TestCase
5
5
 
6
6
  include IntercomRails::ScriptTagHelper
7
- def test_output_is_html_safe?
8
- assert_equal true, intercom_script_tag({}).html_safe?
9
- end
10
-
11
- def test_converts_times_to_unix_timestamps
12
- now = Time.now
13
- assert_match(/.created_at.\s*:\s*#{now.to_i}/, intercom_script_tag({:created_at => now}))
14
- assert_match(/.something.\s*:\s*#{now.to_i}/, intercom_script_tag({:custom_data => {"something" => now}}))
15
- end
16
7
 
17
- def test_strips_out_nil_entries_for_standard_attributes
18
- %w(name email user_id).each do |standard_attribute|
19
- assert_match(/.#{standard_attribute}.\s*:\s*"value"/, intercom_script_tag({standard_attribute => 'value'}))
20
- assert(!intercom_script_tag({standard_attribute.to_sym => nil}).include?("\"#{standard_attribute}\":"), "should strip #{standard_attribute} when nil")
21
- assert(!intercom_script_tag({standard_attribute => nil}).include?("\"#{standard_attribute}\":"), "should strip #{standard_attribute} when nil")
22
- end
23
- end
8
+ def test_delegates_to_script_tag_generate
9
+ delegated = false
10
+ IntercomRails::ScriptTag.stub(:generate) {
11
+ delegated = true
12
+ }
24
13
 
25
- def test_secure_mode
26
- assert_match(/.user_hash.\s*:\s*"#{Digest::SHA1.hexdigest('abcdefgh' + 'ciaran@intercom.io')}"/, intercom_script_tag({:email => "ciaran@intercom.io"}, {:secret => 'abcdefgh'}))
27
- assert_match(/.user_hash.\s*:\s*"#{Digest::SHA1.hexdigest('abcdefgh' + '1234')}"/, intercom_script_tag({:user_id => 1234}, {:secret => 'abcdefgh'}))
28
- assert_match(/.user_hash.\s*:\s*"#{Digest::SHA1.hexdigest('abcdefgh' + '1234')}"/, intercom_script_tag({:user_id => 1234, :email => "ciaran@intercom.io"}, {:secret => 'abcdefgh'}))
14
+ intercom_script_tag({})
15
+ assert(delegated, "should delegate to ScriptTag#generate")
16
+ ensure
17
+ IntercomRails::ScriptTag.rspec_reset
29
18
  end
30
19
 
31
20
  def test_sets_instance_variable
@@ -0,0 +1,62 @@
1
+ require 'active_support/core_ext/string/output_safety'
2
+ require 'test_setup'
3
+
4
+ class ScriptTagTest < MiniTest::Unit::TestCase
5
+
6
+ include IntercomRails
7
+
8
+ def test_output_is_html_safe?
9
+ assert_equal true, ScriptTag.generate({}).html_safe?
10
+ end
11
+
12
+ def test_converts_times_to_unix_timestamps
13
+ time = Time.new(1993,02,13)
14
+ top_level_time = ScriptTag.new(:user_details => {:created_at => time})
15
+ assert_equal time.to_i, top_level_time.intercom_settings[:created_at]
16
+
17
+ now = Time.now
18
+ nested_time = ScriptTag.new(:user_details => {:custom_data => {"something" => now}})
19
+ assert_equal now.to_i, nested_time.intercom_settings[:custom_data]["something"]
20
+ end
21
+
22
+ def test_strips_out_nil_entries_for_standard_attributes
23
+ %w(name email user_id).each do |standard_attribute|
24
+ with_value = ScriptTag.new(:user_details => {standard_attribute => 'value'})
25
+ assert_equal with_value.intercom_settings[standard_attribute], 'value'
26
+
27
+ with_nil_value = ScriptTag.new(:user_details => {standard_attribute.to_sym => 'value'})
28
+ assert with_nil_value.intercom_settings.has_key?(standard_attribute.to_sym), "should strip :#{standard_attribute} when nil"
29
+
30
+ with_nil_value = ScriptTag.new(:user_details => {standard_attribute => 'value'})
31
+ assert with_nil_value.intercom_settings.has_key?(standard_attribute), "should strip #{standard_attribute} when nil"
32
+ end
33
+ end
34
+
35
+ def test_secure_mode_with_email
36
+ script_tag = ScriptTag.new(:user_details => {:email => 'ciaran@intercom.io'}, :secret => 'abcdefgh')
37
+ assert_equal Digest::SHA1.hexdigest('abcdefgh' + 'ciaran@intercom.io'), script_tag.intercom_settings[:user_hash]
38
+ end
39
+
40
+ def test_secure_mode_with_user_id
41
+ script_tag = ScriptTag.new(:user_details => {:user_id => '1234'}, :secret => 'abcdefgh')
42
+ assert_equal Digest::SHA1.hexdigest('abcdefgh' + '1234'), script_tag.intercom_settings[:user_hash]
43
+ end
44
+
45
+ def test_secure_mode_with_email_and_user_id
46
+ script_tag = ScriptTag.new(:user_details => {:user_id => '1234', :email => 'ciaran@intercom.io'}, :secret => 'abcdefgh')
47
+ assert_equal Digest::SHA1.hexdigest('abcdefgh' + '1234'), script_tag.intercom_settings[:user_hash]
48
+ end
49
+
50
+ def test_secure_mode_with_secret_from_config
51
+ IntercomRails.config.api_secret = 'abcd'
52
+ script_tag = ScriptTag.new(:user_details => {:email => 'ben@intercom.io'})
53
+ assert_equal Digest::SHA1.hexdigest('abcd' + 'ben@intercom.io'), script_tag.intercom_settings[:user_hash]
54
+ end
55
+
56
+ def test_secure_mode_chooses_passed_secret_over_config
57
+ IntercomRails.config.api_secret = 'abcd'
58
+ script_tag = ScriptTag.new(:user_details => {:email => 'ben@intercom.io'}, :secret => '1234')
59
+ assert_equal Digest::SHA1.hexdigest('1234' + 'ben@intercom.io'), script_tag.intercom_settings[:user_hash]
60
+ end
61
+
62
+ end
@@ -3,6 +3,13 @@ require 'minitest/autorun'
3
3
  require 'rspec/mocks'
4
4
  require 'pry'
5
5
 
6
+ def dummy_user(options = {})
7
+ user = Struct.new(:email, :name).new
8
+ user.email = options[:email] || 'ben@intercom.io'
9
+ user.name = options[:name] || 'Ben McRedmond'
10
+ user
11
+ end
12
+
6
13
  def fake_action_view_class
7
14
  klass = Class.new(ActionView::Base)
8
15
  klass.class_eval do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-11-21 00:00:00.000000000 Z
14
+ date: 2012-11-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
@@ -139,9 +139,12 @@ files:
139
139
  - lib/data/cacert.pem
140
140
  - lib/intercom-rails/auto_include_filter.rb
141
141
  - lib/intercom-rails/config.rb
142
+ - lib/intercom-rails/current_user.rb
143
+ - lib/intercom-rails/exceptions.rb
142
144
  - lib/intercom-rails/import.rb
143
145
  - lib/intercom-rails/intercom.rake
144
146
  - lib/intercom-rails/railtie.rb
147
+ - lib/intercom-rails/script_tag.rb
145
148
  - lib/intercom-rails/script_tag_helper.rb
146
149
  - lib/intercom-rails/version.rb
147
150
  - lib/intercom-rails.rb
@@ -154,9 +157,11 @@ files:
154
157
  - test/import_test_setup.rb
155
158
  - test/intercom-rails/auto_include_filter_test.rb
156
159
  - test/intercom-rails/config_test.rb
160
+ - test/intercom-rails/current_user_test.rb
157
161
  - test/intercom-rails/import_network_test.rb
158
162
  - test/intercom-rails/import_unit_test.rb
159
163
  - test/intercom-rails/script_tag_helper_test.rb
164
+ - test/intercom-rails/script_tag_test.rb
160
165
  - test/test_setup.rb
161
166
  homepage: http://www.intercom.io
162
167
  licenses: []
@@ -172,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
177
  version: '0'
173
178
  segments:
174
179
  - 0
175
- hash: -1387323619916474735
180
+ hash: 1999589509538481455
176
181
  required_rubygems_version: !ruby/object:Gem::Requirement
177
182
  none: false
178
183
  requirements:
@@ -181,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
186
  version: '0'
182
187
  segments:
183
188
  - 0
184
- hash: -1387323619916474735
189
+ hash: 1999589509538481455
185
190
  requirements: []
186
191
  rubyforge_project: intercom-rails
187
192
  rubygems_version: 1.8.23
@@ -193,7 +198,9 @@ test_files:
193
198
  - test/import_test_setup.rb
194
199
  - test/intercom-rails/auto_include_filter_test.rb
195
200
  - test/intercom-rails/config_test.rb
201
+ - test/intercom-rails/current_user_test.rb
196
202
  - test/intercom-rails/import_network_test.rb
197
203
  - test/intercom-rails/import_unit_test.rb
198
204
  - test/intercom-rails/script_tag_helper_test.rb
205
+ - test/intercom-rails/script_tag_test.rb
199
206
  - test/test_setup.rb