intercom-rails 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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