intercom-rails 0.1.0 → 0.1.1

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.mdown CHANGED
@@ -1,8 +1,8 @@
1
1
  # IntercomRails
2
2
 
3
- Rails helper for creating Intercom (https://www.intercom.io) javascript tags.
3
+ The easiest way to install Intercom in a rails app.
4
4
 
5
- For interacting with the Intercom API, use the intercom gem (https://github.com/intercom/intercom-ruby)
5
+ For interacting with the Intercom REST API, use the `intercom` gem (https://github.com/intercom/intercom-ruby)
6
6
 
7
7
  ## Installation
8
8
  Add this to your Gemfile:
@@ -17,43 +17,108 @@ Then run:
17
17
  bundle install
18
18
  ```
19
19
 
20
- ## Usage
20
+ Take note of your `app_id` from [here](https://www.intercom.io/apps/api_keys) and generate a config file:
21
21
 
22
- Take note of your `app_id` from here: You can find your app id here: https://www.intercom.io/apps/api_keys
22
+ ```
23
+ rails generate intercom:config YOUR-APP-ID
24
+ ```
25
+
26
+ To make installing Intercom as easy as possible, where possible a `<script>` tag **will be automatically inserted before the closing `</body>` tag**. For most Rails apps, **you won't need to do any extra config**. Having trouble? Check out troubleshooting below.
23
27
 
24
- ### Automatic insertion of intercom_script_tag
28
+ To disable automatic insertion for a particular controller or action you can:
25
29
 
26
- To help get people up and running quicker, where possible `intercom_script_tag` will be automatically inserted when a logged in user is detected.
30
+ ```ruby
31
+ skip_after_filter IntercomRails::AutoIncludeFilter
32
+ ```
27
33
 
28
- In order to use this, you have to configure your `app_id`.
34
+ ### Troubleshooting
35
+ If it's not working make sure:
29
36
 
30
- The best way to do this is using the generator:
37
+ * You've generated a config file with your `app_id` as detailed above.
38
+ * Your user object responds to an `id` or `email` method.
39
+ * Your current user is accessible in your controllers as `current_user` or `@user`, if not in `config/initializers/intercom.rb`:
31
40
 
41
+ ```ruby
42
+ config.current_user = Proc.new { current_user_object }
32
43
  ```
33
- rails g intercom:config YOUR-APP-ID
44
+
45
+ Feel free to mail us: team@intercom.io, if you're still having trouble.
46
+
47
+ ## Configuration
48
+
49
+ ### API Secret
50
+ If you want to use secure mode, ensure you set your API secret in `config/initializers/intercom.rb`:
51
+
52
+ ```ruby
53
+ config.api_secret = '123456'
34
54
  ```
35
55
 
36
- Which sets your app id in `config/initializers/intercom.rb`
56
+ ### Custom Data
57
+ Custom data lets you associate any data, specific to your app, with a user in Intercom. For custom data variables you want updated on every request set them in `config/initializers/intercom.rb`.
37
58
 
38
- To disable automatic insertion for a particular controller or action you can:
59
+ You can give either a:
60
+
61
+ * `Proc` which will be passed the current user object
62
+ * Or, a method which will be sent to the current user object
63
+
64
+ to generate the values of the custom data:
65
+
66
+ ```ruby
67
+ config.custom_data = {
68
+ :plan => Proc.new { |user| user.plan.name },
69
+ :is_paid => Proc.new { |user| user.plan.present? },
70
+ :email_verified => :email_verified?
71
+ }
72
+ ```
73
+
74
+ In some situations you'll want to set some custom data specific to a request. You can do this using the `intercom_custom_data` helper available in your controllers:
39
75
 
40
76
  ```ruby
41
- skip_after_filter IntercomRails::AutoIncludeFilter
77
+ class AppsController < ActionController::Base
78
+ def activate
79
+ intercom_custom_data[:app_activated_at] = Time.now
80
+ ...
81
+ end
82
+
83
+ def destroy
84
+ intercom_custom_data[:app_deleted_at] = Time.now
85
+ ...
86
+ end
87
+ end
42
88
  ```
43
89
 
44
- ### Adding intercom_script_tag to your layout with a generator
90
+ ### Inbox
91
+ Intercom includes an inbox which allows a user to read their past conversations with your app, and start new conversations. It's hidden by default, you can include a link to open it by adding a line to `config/initializers/intercom.rb`:
45
92
 
46
- The __intercom:install__ rails generator will add `intercom_script_tag` to your application layout. It provides a great start that will work well for most people and is easily customised.
93
+ To use the default link style, which requires no extra config and includes a small question mark icon in the bottom right corner of your app:
47
94
 
95
+ ```ruby
96
+ config.inbox.style = :default
48
97
  ```
49
- rails g intercom:install YOUR-APP-ID
98
+
99
+ If you want to customize the style of the link that opens the inbox:
100
+
101
+ ```ruby
102
+ config.inbox.style = :custom
50
103
  ```
51
104
 
52
- If you want to start providing custom data about your users, then this is the way to go.
105
+ This option attaches the inbox open event to the click event of an element with an id of `#Intercom`. So the simplest option here would be to add something like the following to your layout:
53
106
 
54
- ### Manual install
107
+ ```html
108
+ <a id="#Intercom">Support</a>
109
+ ```
110
+
111
+ You can read more about configuring the Inbox within Intercom (Config menu -> Inbox Link).
112
+
113
+ ### Manually Inserting the Intercom Javascript
114
+
115
+ Some situations may require manually inserting the Intercom script tag. If you simply wish to place the Intercom javascript in a different place within the page or, on a page without a closing `</body>` tag:
116
+
117
+ ```erb
118
+ <%= intercom_script_tag %>
119
+ ```
55
120
 
56
- In your layout file:
121
+ This will behave exactly the same as the default auto-install. If for whatever reason you can't use auto-install, you can also provide a hash of user data as the first argument:
57
122
 
58
123
  ```erb
59
124
  <% if logged_in? %>
@@ -64,25 +129,13 @@ In your layout file:
64
129
  :name => current_user.name
65
130
  :created_at => current_user.created_at
66
131
  :custom_data => {
67
-
68
- }}) %>
132
+ 'plan' => current_user.plan.name
133
+ }
134
+ }) %>
69
135
  <% end %>
70
136
  ```
71
137
 
72
- `:custom_data` allows you to specify any app/user/situational data to associate with the current_user. It will be visible in Intercom, and you'll be able to search/filter/send messages based on it.
73
-
74
- e.g.
75
-
76
- ```ruby
77
- :custom_data => {
78
- :plan => "Pro",
79
- :dashboard_page => 'http://dashboard.example.com/user-id'
80
- }
81
- ```
82
-
83
- ### Secure mode
84
-
85
- Pass in a second argument to `intercom_script_tag`, a hash containing the secret, like so:
138
+ You can also override `IntercomRails::Config` options such as your `api_secret`, or widget configuration with a second hash:
86
139
 
87
140
  ```erb
88
141
  <% if logged_in? %>
@@ -92,13 +145,27 @@ Pass in a second argument to `intercom_script_tag`, a hash containing the secret
92
145
  :email => current_user.email
93
146
  :name => current_user.name
94
147
  :created_at => current_user.created_at
95
- },
96
- {:secret => 'your-apps-secret'}
97
- ) %>
148
+ }, {
149
+ :secret => 'your-apps-secret',
150
+ :widget => {:activator => '#Intercom'}
151
+ }) %>
98
152
  <% end %>
99
153
  ```
100
154
 
101
- See `IntercomRails::ScriptTagHelper` for more details.
155
+ The `intercom:install` rails generator will add the `intercom_script_tag` to your application layout:
156
+
157
+ ```
158
+ rails g intercom:install YOUR-APP-ID
159
+ ```
160
+
161
+ ## Importing your users
162
+ To get started faster with Intercom, `IntercomRails` includes a Rake task that will do an initial import of your users:
163
+
164
+ ```
165
+ rake intercom:import
166
+ ```
167
+
168
+ Any custom data defined in `config/initializers/intercom.rb` will also be sent.
102
169
 
103
170
  ## Contributors
104
171
 
@@ -47,6 +47,7 @@ module IntercomRails
47
47
  end
48
48
 
49
49
  def valid?
50
+ return false if user.blank?
50
51
  return true if user.respond_to?(:id) && user.id.present?
51
52
  return true if user.respond_to?(:email) && user.email.present?
52
53
  false
@@ -1,3 +1,3 @@
1
1
  module IntercomRails
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -86,4 +86,10 @@ class UserProxyTest < MiniTest::Unit::TestCase
86
86
  assert_equal expected_custom_data, @user_proxy.to_hash[:custom_data]
87
87
  end
88
88
 
89
+ def test_valid_returns_false_for_nil
90
+ search_object = false
91
+ search_object.stub(:id) { raise NameError }
92
+ assert_equal false, UserProxy.new(search_object).valid?
93
+ end
94
+
89
95
  end
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.1.0
4
+ version: 0.1.1
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-23 00:00:00.000000000 Z
14
+ date: 2012-11-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
@@ -178,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
178
  version: '0'
179
179
  segments:
180
180
  - 0
181
- hash: -888650267996425080
181
+ hash: 2121047111901162592
182
182
  required_rubygems_version: !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
@@ -187,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  version: '0'
188
188
  segments:
189
189
  - 0
190
- hash: -888650267996425080
190
+ hash: 2121047111901162592
191
191
  requirements: []
192
192
  rubyforge_project: intercom-rails
193
193
  rubygems_version: 1.8.23