intercom-rails 0.3.2 → 0.3.3
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.
- checksums.yaml +4 -4
- data/README.mdown +54 -9
- data/lib/intercom-rails/auto_include_filter.rb +3 -1
- data/lib/intercom-rails/config.rb +22 -10
- data/lib/intercom-rails/date_helper.rb +1 -0
- data/lib/intercom-rails/proxy.rb +13 -10
- data/lib/intercom-rails/proxy/company.rb +2 -0
- data/lib/intercom-rails/script_tag.rb +1 -0
- data/lib/intercom-rails/version.rb +1 -1
- data/lib/rails/generators/intercom/config/intercom.rb.erb +8 -0
- metadata +31 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fad8f8d2ec8aa23c29149ded67376d397692901d
|
4
|
+
data.tar.gz: bcc4e82069fe43a4058dee9aba24d30976f2f002
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46d75b65e5324ef4df39e0858d2ae8d76186acb325a51b63e41237d2bc17d936dd6e4bedf4c3bbbb88c64d29b9eb4c021022117a30ddfdb41f069d524b03a262
|
7
|
+
data.tar.gz: 6a5707a85610968b143730224ae3ffc90af1bd49ceafc7b97d82c87a2214877ef71d0a80eeb2e18f25e050f7dcff16d3f51c71866f96898fd84facee3444bbc8
|
data/README.mdown
CHANGED
@@ -17,13 +17,21 @@ Then run:
|
|
17
17
|
bundle install
|
18
18
|
```
|
19
19
|
|
20
|
-
Take note of your `app_id` from [here](https://app.intercom.io/apps/
|
20
|
+
Take note of your `app_id` from [here](https://app.intercom.io/a/apps/_/settings/api-keys) and generate a config file:
|
21
21
|
|
22
22
|
```
|
23
23
|
rails generate intercom:config YOUR-APP-ID
|
24
24
|
```
|
25
25
|
|
26
|
-
To make installing Intercom
|
26
|
+
To make installing Intercom easy, 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.
|
27
|
+
|
28
|
+
|
29
|
+
### Live Chat / Acquire
|
30
|
+
With our [Acquire package](https://www.intercom.io/live-chat), Intercom Messenger now works with logged out users and visitors to your web site. Include the Intercom snippet on every page by setting:
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
config.include_for_logged_out_users = true
|
34
|
+
```
|
27
35
|
|
28
36
|
### Disabling automatic insertion
|
29
37
|
|
@@ -151,6 +159,8 @@ e.g.
|
|
151
159
|
:is_paid => Proc.new { |user| user.plan.present? },
|
152
160
|
:email_verified => :email_verified?
|
153
161
|
}
|
162
|
+
# or If User::custom_data method returns a hash
|
163
|
+
config.user.custom_data = Proc.new { |user| user.custom_data }
|
154
164
|
```
|
155
165
|
|
156
166
|
In some situations you'll want to set some custom data attribute specific to a request.
|
@@ -230,13 +240,6 @@ config.company.custom_data = {
|
|
230
240
|
}
|
231
241
|
```
|
232
242
|
|
233
|
-
### Live Chat / Acquire
|
234
|
-
With our [Acquire package](https://www.intercom.io/live-chat), Intercom Messenger now works with logged out users and visitors to your web site. Include the Intercom snippet on every page by setting:
|
235
|
-
|
236
|
-
```ruby
|
237
|
-
config.include_for_logged_out_users = true
|
238
|
-
```
|
239
|
-
|
240
243
|
### Messenger
|
241
244
|
Intercom includes an in-app messenger which allows a user to read messages and start conversations.
|
242
245
|
|
@@ -258,6 +261,12 @@ You can customize the CSS selector, by setting
|
|
258
261
|
config.inbox.custom_activator = '.intercom-link'
|
259
262
|
```
|
260
263
|
|
264
|
+
You can hide default launcher button, by setting
|
265
|
+
|
266
|
+
```ruby
|
267
|
+
config.hide_default_launcher = true
|
268
|
+
```
|
269
|
+
|
261
270
|
You can read more about configuring the messenger in your applications settings, within Intercom.
|
262
271
|
|
263
272
|
### Environments
|
@@ -363,6 +372,24 @@ The SHA-256 hash is available using `csp_sha256` just after generating the tag i
|
|
363
372
|
<% add_entry_to_csp_whitelist(intercom_script_tag.csp_sha256) %>
|
364
373
|
```
|
365
374
|
|
375
|
+
## Deleting your users
|
376
|
+
If you delete a user from your system, you should also delete them from Intercom lest they still receive messages.
|
377
|
+
|
378
|
+
You can do this using the [intercom-ruby](https://github.com/intercom/intercom-ruby) gem. In the example below we're using an ActiveJob to perform the delete in the background.
|
379
|
+
|
380
|
+
```
|
381
|
+
class User
|
382
|
+
after_destroy { DeleteFromIntercom.perform_later(self)
|
383
|
+
end
|
384
|
+
|
385
|
+
class DeleteFromIntercom < ApplicationJob
|
386
|
+
def perform(user)
|
387
|
+
intercom = Intercom::Client.new
|
388
|
+
intercom.users.find(email: user.email).delete
|
389
|
+
end
|
390
|
+
end
|
391
|
+
```
|
392
|
+
|
366
393
|
## Running tests/specs
|
367
394
|
|
368
395
|
specs should run on a clean clone of this repo, using the following commands. (developed against ruby 2.1.2 and 1.9.3)
|
@@ -374,6 +401,24 @@ or
|
|
374
401
|
bundle exec rspec spec/
|
375
402
|
```
|
376
403
|
|
404
|
+
|
405
|
+
## Pull Requests
|
406
|
+
|
407
|
+
- **Add tests!** Your patch won't be accepted if it doesn't have tests.
|
408
|
+
|
409
|
+
- **Document any change in behaviour**. Make sure the README and any other
|
410
|
+
relevant documentation are kept up-to-date.
|
411
|
+
|
412
|
+
- **Create topic branches**. Don't ask us to pull from your master branch.
|
413
|
+
|
414
|
+
- **One pull request per feature**. If you want to do more than one thing, send
|
415
|
+
multiple pull requests.
|
416
|
+
|
417
|
+
- **Send coherent history**. Make sure each individual commit in your pull
|
418
|
+
request is meaningful. If you had to make multiple intermediate commits while
|
419
|
+
developing, please squash them before sending them to us.
|
420
|
+
|
421
|
+
|
377
422
|
## Contributors
|
378
423
|
|
379
424
|
- Dr Nic Williams (@drnic) - provided a rails generator for adding the Intercom javascript tag into your layout.
|
@@ -32,7 +32,9 @@ module IntercomRails
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def include_javascript!
|
35
|
-
|
35
|
+
split = response.body.split("</body>")
|
36
|
+
response.body = split.first + intercom_script_tag.to_s + "</body>"
|
37
|
+
response.body = response.body + split.last if split.size > 1
|
36
38
|
end
|
37
39
|
|
38
40
|
def include_javascript?
|
@@ -21,13 +21,7 @@ module IntercomRails
|
|
21
21
|
|
22
22
|
def self.config_writer(name, &block)
|
23
23
|
meta_class.send(:define_method, "#{name}=") do |value|
|
24
|
-
|
25
|
-
|
26
|
-
if block && (block.arity > 1)
|
27
|
-
field_name = underscored_class_name ? "#{underscored_class_name}.#{name}" : name
|
28
|
-
block.call(value, field_name)
|
29
|
-
end
|
30
|
-
|
24
|
+
validate(name, value, block)
|
31
25
|
instance_variable_set("@#{name}", value)
|
32
26
|
end
|
33
27
|
end
|
@@ -45,6 +39,17 @@ module IntercomRails
|
|
45
39
|
end
|
46
40
|
|
47
41
|
private
|
42
|
+
|
43
|
+
def self.validate(name, value, block)
|
44
|
+
return unless block
|
45
|
+
args = [value]
|
46
|
+
if block.arity > 1
|
47
|
+
field_name = underscored_class_name ? "#{underscored_class_name}.#{name}" : name
|
48
|
+
args << field_name
|
49
|
+
end
|
50
|
+
block.call(*args)
|
51
|
+
end
|
52
|
+
|
48
53
|
def self.underscored_class_name
|
49
54
|
@underscored_class_name
|
50
55
|
end
|
@@ -54,9 +59,14 @@ module IntercomRails
|
|
54
59
|
class Config < ConfigSingleton
|
55
60
|
|
56
61
|
CUSTOM_DATA_VALIDATOR = Proc.new do |custom_data, field_name|
|
57
|
-
|
58
|
-
|
59
|
-
|
62
|
+
case custom_data
|
63
|
+
when Hash
|
64
|
+
unless custom_data.values.all? { |value| value.kind_of?(Proc) || value.kind_of?(Symbol) }
|
65
|
+
raise ArgumentError, "all custom_data attributes should be either a Proc or a symbol"
|
66
|
+
end
|
67
|
+
when Proc, Symbol
|
68
|
+
else
|
69
|
+
raise ArgumentError, "#{field_name} custom_data should be either be a hash or a Proc/Symbol that returns a hash when called"
|
60
70
|
end
|
61
71
|
end
|
62
72
|
|
@@ -97,6 +107,7 @@ module IntercomRails
|
|
97
107
|
config_accessor :library_url
|
98
108
|
config_accessor :enabled_environments, &ARRAY_VALIDATOR
|
99
109
|
config_accessor :include_for_logged_out_users
|
110
|
+
config_accessor :hide_default_launcher
|
100
111
|
|
101
112
|
def self.api_key=(*)
|
102
113
|
warn "Setting an Intercom API key is no longer supported; remove the `config.api_key = ...` line from config/initializers/intercom.rb"
|
@@ -116,6 +127,7 @@ module IntercomRails
|
|
116
127
|
|
117
128
|
config_group :company do
|
118
129
|
config_accessor :current, &IS_PROC_VALIDATOR
|
130
|
+
config_accessor :exclude_if, &IS_PROC_VALIDATOR
|
119
131
|
config_accessor :plan, &IS_PROC_VALIDATOR
|
120
132
|
config_accessor :monthly_spend, &IS_PROC_VALIDATOR
|
121
133
|
config_accessor :custom_data, &CUSTOM_DATA_VALIDATOR
|
@@ -3,6 +3,7 @@ module IntercomRails
|
|
3
3
|
def self.convert_dates_to_unix_timestamps(object)
|
4
4
|
return Hash[object.map { |k, v| [k, convert_dates_to_unix_timestamps(v)] }] if object.is_a?(Hash)
|
5
5
|
return object.to_i if object.is_a?(Time) || object.is_a?(DateTime)
|
6
|
+
return object.to_time.to_i if object.is_a?(Date)
|
6
7
|
object
|
7
8
|
end
|
8
9
|
end
|
data/lib/intercom-rails/proxy.rb
CHANGED
@@ -129,16 +129,19 @@ module IntercomRails
|
|
129
129
|
|
130
130
|
def custom_data_from_config
|
131
131
|
return {} if config.custom_data.blank?
|
132
|
-
config.custom_data
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
132
|
+
custom_data_value(config.custom_data)
|
133
|
+
end
|
134
|
+
|
135
|
+
def custom_data_value(proc_or_symbol_or_hash)
|
136
|
+
case proc_or_symbol_or_hash
|
137
|
+
when Symbol
|
138
|
+
proxied_object.send(proc_or_symbol_or_hash)
|
139
|
+
when Proc
|
140
|
+
proc_or_symbol_or_hash.call(proxied_object)
|
141
|
+
when Hash
|
142
|
+
proc_or_symbol_or_hash.reduce({}) do |custom_data, (k,v)|
|
143
|
+
custom_data.merge(k => custom_data_value(v))
|
144
|
+
end
|
142
145
|
end
|
143
146
|
end
|
144
147
|
|
@@ -24,6 +24,8 @@ module IntercomRails
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def valid?
|
27
|
+
return false if company.blank? || company.respond_to?(:new_record?) && company.new_record?
|
28
|
+
return false if config.company.exclude_if.present? && config.company.exclude_if.call(company)
|
27
29
|
company.present? && identity_present?
|
28
30
|
end
|
29
31
|
|
@@ -64,6 +64,7 @@ module IntercomRails
|
|
64
64
|
hsh[:session_duration] = @session_duration if @session_duration.present?
|
65
65
|
hsh[:widget] = widget_options if widget_options.present?
|
66
66
|
hsh[:company] = company_details if company_details.present?
|
67
|
+
hsh[:hide_default_launcher] = Config.hide_default_launcher if Config.hide_default_launcher
|
67
68
|
hsh
|
68
69
|
end
|
69
70
|
|
@@ -84,6 +84,11 @@ IntercomRails.config do |config|
|
|
84
84
|
#
|
85
85
|
# config.company.current = Proc.new { current_user.company }
|
86
86
|
|
87
|
+
# == Exclude company
|
88
|
+
# A Proc that given a company returns true if the company should be excluded
|
89
|
+
# from imports and Javascript inclusion, false otherwise.
|
90
|
+
#
|
91
|
+
# config.company.exclude_if = Proc.new { |app| app.subdomain == 'demo' }
|
87
92
|
|
88
93
|
# == Company Custom Data
|
89
94
|
# A hash of additional data you wish to send about a company.
|
@@ -119,4 +124,7 @@ IntercomRails.config do |config|
|
|
119
124
|
# uncomment this line and clicks on any element that matches the query will
|
120
125
|
# open the messenger
|
121
126
|
# config.inbox.custom_activator = '.intercom'
|
127
|
+
#
|
128
|
+
# If you'd like to hide default launcher button uncomment this line
|
129
|
+
# config.hide_default_launcher = true
|
122
130
|
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.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben McRedmond
|
@@ -10,146 +10,146 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-10-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '>'
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '>'
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '3.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '0'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: actionpack
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - '>'
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 3.2.12
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - '>'
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: 3.2.12
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: rspec
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ~>
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '3.1'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ~>
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '3.1'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rspec-rails
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '3.1'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - ~>
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '3.1'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: pry
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - '>='
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - '>='
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: sinatra
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- -
|
103
|
+
- - ~>
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: 1.4.5
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - ~>
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: 1.4.5
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: thin
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- -
|
117
|
+
- - ~>
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 1.
|
119
|
+
version: 1.7.0
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - ~>
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: 1.
|
126
|
+
version: 1.7.0
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: tzinfo
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
|
-
- -
|
131
|
+
- - '>='
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: '0'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
|
-
- -
|
138
|
+
- - '>='
|
139
139
|
- !ruby/object:Gem::Version
|
140
140
|
version: '0'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: gem-release
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
|
-
- -
|
145
|
+
- - '>='
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: '0'
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
|
-
- -
|
152
|
+
- - '>='
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '0'
|
155
155
|
description: Intercom (https://www.intercom.io) is a customer relationship management
|
@@ -163,25 +163,25 @@ executables: []
|
|
163
163
|
extensions: []
|
164
164
|
extra_rdoc_files: []
|
165
165
|
files:
|
166
|
-
- README.mdown
|
167
|
-
- Rakefile
|
168
166
|
- lib/data/cacert.pem
|
169
|
-
- lib/intercom-rails.rb
|
170
167
|
- lib/intercom-rails/auto_include_filter.rb
|
171
168
|
- lib/intercom-rails/config.rb
|
172
169
|
- lib/intercom-rails/custom_data_helper.rb
|
173
170
|
- lib/intercom-rails/date_helper.rb
|
174
171
|
- lib/intercom-rails/exceptions.rb
|
175
|
-
- lib/intercom-rails/proxy.rb
|
176
172
|
- lib/intercom-rails/proxy/company.rb
|
177
173
|
- lib/intercom-rails/proxy/user.rb
|
174
|
+
- lib/intercom-rails/proxy.rb
|
178
175
|
- lib/intercom-rails/railtie.rb
|
179
176
|
- lib/intercom-rails/script_tag.rb
|
180
177
|
- lib/intercom-rails/script_tag_helper.rb
|
181
178
|
- lib/intercom-rails/shutdown_helper.rb
|
182
179
|
- lib/intercom-rails/version.rb
|
180
|
+
- lib/intercom-rails.rb
|
183
181
|
- lib/rails/generators/intercom/config/config_generator.rb
|
184
182
|
- lib/rails/generators/intercom/config/intercom.rb.erb
|
183
|
+
- Rakefile
|
184
|
+
- README.mdown
|
185
185
|
homepage: http://www.intercom.io
|
186
186
|
licenses:
|
187
187
|
- MIT
|
@@ -192,17 +192,17 @@ require_paths:
|
|
192
192
|
- lib
|
193
193
|
required_ruby_version: !ruby/object:Gem::Requirement
|
194
194
|
requirements:
|
195
|
-
- -
|
195
|
+
- - '>='
|
196
196
|
- !ruby/object:Gem::Version
|
197
197
|
version: '0'
|
198
198
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
|
-
- -
|
200
|
+
- - '>='
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: '0'
|
203
203
|
requirements: []
|
204
204
|
rubyforge_project: intercom-rails
|
205
|
-
rubygems_version: 2.
|
205
|
+
rubygems_version: 2.0.14.1
|
206
206
|
signing_key:
|
207
207
|
specification_version: 4
|
208
208
|
summary: Rails helper for emitting javascript script tags for Intercom
|