gtm_on_rails 0.1.10 → 0.1.11
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c9e870f052ec71da90cdec566206bf0a0abbdb3
|
4
|
+
data.tar.gz: d9f6a5094d2f6ab658b0f6b4b65c792d2c6ecee1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bada8d3c2ab77c132d1aa4e4441b633c07e94ea6fbde9ee3c302c089b061da502f9630d5c368c154fa5a17898062a43faef76c4e95a3972826e7e6cc3ecf087
|
7
|
+
data.tar.gz: 3ee546cdb7d1ae43bb00a3d0f0c8e2c7143f372fc931cde46fe0ac7d647cde5e72db2994584735a94d56bceaa26cab99dd8dd3f5a841c8e42b018c205c855b22
|
data/README.ja.md
CHANGED
@@ -52,6 +52,21 @@ data_layer.push({
|
|
52
52
|
|
53
53
|
送信したdataLayerの内容は、GoogleTagManager側で変数に設定する等して使用して下さい。
|
54
54
|
|
55
|
+
```ruby
|
56
|
+
data_layer.push(
|
57
|
+
{
|
58
|
+
name: 'name'
|
59
|
+
},
|
60
|
+
before_page_view: true
|
61
|
+
)
|
62
|
+
```
|
63
|
+
|
64
|
+
上記のように`before_page_view`属性を設定することで、GoogleTagManagerの「Page View」イベントより前にdataLayerをpushできます。
|
65
|
+
|
66
|
+
「Page View」イベント自体にdataLayerの変数を使用したい場合等に使用します。
|
67
|
+
|
68
|
+
※GoogleAnalyticsのページビュー送信より前に「ヒット」系の送信が行われてしまうと、正常にGoogleAnalyticsのページビューが計測できない可能性があるので、使用する際は注意して下さい。
|
69
|
+
|
55
70
|
#### `GtmOnRails::DataLayer::Object`
|
56
71
|
```ruby
|
57
72
|
object = GtmOnRails::DataLayer::Object.new({name: 'name'})
|
data/README.md
CHANGED
@@ -52,6 +52,21 @@ data_layer.push({
|
|
52
52
|
```
|
53
53
|
Configure the variable and so on Google Tag Manager when use sended values.
|
54
54
|
|
55
|
+
```ruby
|
56
|
+
data_layer.push(
|
57
|
+
{
|
58
|
+
name: 'name'
|
59
|
+
},
|
60
|
+
before_page_view: true
|
61
|
+
)
|
62
|
+
```
|
63
|
+
|
64
|
+
You also can set dataLayer values before the "Page View" event of Google Tag Manager, when you use `before_page_view` option as the above.
|
65
|
+
|
66
|
+
For examle, you use this option when want to use dataLayer's variables in the "Page View" event.
|
67
|
+
|
68
|
+
† Be careful of using this option, because you may not be measure PageView normalcy, when you send Hit type event to GoogleAnalytics before send PageView.
|
69
|
+
|
55
70
|
#### `GtmOnRails::DataLayer::Object`
|
56
71
|
```ruby
|
57
72
|
object = GtmOnRails::DataLayer::Object.new({name: 'name'})
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% begin %>
|
2
|
+
<!-- GTM on Rails before Page View -->
|
3
|
+
<%= data_layer.print_on_html(before_page_view: true) %>
|
4
|
+
<!-- End GTM on Rails before Page View -->
|
5
|
+
<%-
|
6
|
+
rescue => e
|
7
|
+
if GtmOnRails.config.rescue_when_error_occurred
|
8
|
+
logger.warn(e.message)
|
9
|
+
logger.warn(e.backtrace.join("\n"))
|
10
|
+
else
|
11
|
+
raise e
|
12
|
+
end
|
13
|
+
end
|
14
|
+
-%>
|
@@ -3,30 +3,40 @@ module GtmOnRails
|
|
3
3
|
class DataLayer
|
4
4
|
include ActionView::Helpers::TagHelper
|
5
5
|
|
6
|
-
attr_accessor :objects
|
6
|
+
attr_accessor :objects, :objects_before_page_view
|
7
7
|
|
8
8
|
def initialize(*args)
|
9
9
|
options = args.extract_options!
|
10
10
|
@objects = [args].flatten # @objects are instances of GTM::DataLayerObject
|
11
|
+
|
12
|
+
@objects_before_page_view = []
|
11
13
|
end
|
12
14
|
|
13
|
-
def push(args)
|
15
|
+
def push(args, **options)
|
14
16
|
args = [args].flatten
|
15
17
|
args.each do |object|
|
16
18
|
case object
|
17
19
|
when Hash
|
18
|
-
|
20
|
+
obj = GtmOnRails::DataLayer::Object.new(object)
|
19
21
|
when GtmOnRails::DataLayer::Object
|
20
|
-
|
22
|
+
obj = object
|
23
|
+
end
|
24
|
+
|
25
|
+
if options[:before_page_view]
|
26
|
+
@objects_before_page_view << obj
|
27
|
+
else
|
28
|
+
@objects << obj
|
21
29
|
end
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
25
|
-
def to_js
|
33
|
+
def to_js(before_page_view: false)
|
26
34
|
js_codes = []
|
27
35
|
|
28
36
|
js_codes << "var dataLayer = dataLayer || [];"
|
29
|
-
|
37
|
+
|
38
|
+
objs = before_page_view ? @objects_before_page_view : @objects
|
39
|
+
objs.each do |data_layer_object|
|
30
40
|
# dataLayer size limit exception
|
31
41
|
size = data_layer_object.to_json.bytesize
|
32
42
|
if size > GtmOnRails.config.data_layer_limit_byte_size
|
@@ -40,8 +50,8 @@ module GtmOnRails
|
|
40
50
|
return js_codes.join.html_safe
|
41
51
|
end
|
42
52
|
|
43
|
-
def print_on_html
|
44
|
-
content_tag(:script, self.to_js)
|
53
|
+
def print_on_html(before_page_view: false)
|
54
|
+
content_tag(:script, self.to_js(before_page_view: before_page_view))
|
45
55
|
end
|
46
56
|
|
47
57
|
def method_missing(method, *args, &block)
|
@@ -2,6 +2,7 @@ module GtmOnRails
|
|
2
2
|
module TagHelper
|
3
3
|
def render_gtm_on_rails_tag_in_head
|
4
4
|
tags = []
|
5
|
+
tags << render(partial: 'gtm_on_rails/layouts/data_layer_before_page_view_tag')
|
5
6
|
tags << render(partial: 'gtm_on_rails/layouts/google_tag_manager_tag_in_head')
|
6
7
|
tags.join.html_safe
|
7
8
|
end
|
data/lib/gtm_on_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gtm_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ykogure
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- README.ja.md
|
50
50
|
- README.md
|
51
51
|
- Rakefile
|
52
|
+
- app/views/gtm_on_rails/layouts/_data_layer_before_page_view_tag.html.erb
|
52
53
|
- app/views/gtm_on_rails/layouts/_data_layer_tag.html.erb
|
53
54
|
- app/views/gtm_on_rails/layouts/_google_tag_manager_tag_in_body.html.erb
|
54
55
|
- app/views/gtm_on_rails/layouts/_google_tag_manager_tag_in_head.html.erb
|