planbcd-rails 0.0.3 → 0.1.0
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.md +1 -1
- data/lib/planbcd/rails/configuration.rb +1 -1
- data/lib/planbcd/rails/middleware.rb +1 -1
- data/lib/planbcd/rails/railtie.rb +7 -2
- data/lib/planbcd/rails/version.rb +1 -1
- data/lib/planbcd/rails/view_helpers.rb +7 -5
- data/spec/planbcd/rails/middleware_spec.rb +3 -3
- data/spec/planbcd/rails/view_helpers_spec.rb +10 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52e1e49c64b8c5ea9135d640353e26c118f1080b
|
4
|
+
data.tar.gz: 3c7550383de391e858b48396511c8cae6d83f739
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcf0fa96c6df01ebe1a74cf9fd0d5b7ea9da5d934af5dfa0fc5971c8e107bc94cc25f9c17c6cababc1cdd8da8a303cb177a817926ca049aba4bb6f3c5e90141c
|
7
|
+
data.tar.gz: 52f69b371fdcb75c88aedb5774c2d22169d64896d9955ca4f47ad91d9c012b20af9fae2fb59aad3021aaeade2f933a14c084c0788a8ff0e97f29b0be0530e09e
|
data/README.md
CHANGED
@@ -5,8 +5,13 @@ require 'planbcd/rails/middleware'
|
|
5
5
|
module PlanBCD
|
6
6
|
module Rails
|
7
7
|
class Railtie < ::Rails::Railtie
|
8
|
-
initializer "planbcd-rails" do |app|
|
9
|
-
|
8
|
+
initializer "planbcd-rails:action_view" do |app|
|
9
|
+
ActiveSupport.on_load :action_view do
|
10
|
+
include ViewHelpers
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
initializer "planbcd-rails:middleware" do |app|
|
10
15
|
app.middleware.use Middleware
|
11
16
|
end
|
12
17
|
end
|
@@ -4,19 +4,21 @@ require 'active_support/core_ext/object/blank'
|
|
4
4
|
module PlanBCD
|
5
5
|
module Rails
|
6
6
|
module ViewHelpers
|
7
|
+
include ERB::Util
|
8
|
+
|
7
9
|
def pbcd_init
|
8
|
-
unless
|
10
|
+
unless js_url = PlanBCD::Rails.configuration.js_url.presence
|
9
11
|
raise PlanBCD::Rails::RuntimeError, "PlanBCD Javascript has not been set."
|
10
12
|
end
|
11
13
|
|
12
|
-
if
|
13
|
-
|
14
|
+
if js_url.respond_to?(:call)
|
15
|
+
js_url = js_url.call(controller)
|
14
16
|
else
|
15
|
-
|
17
|
+
js_url.gsub!(%r|^https?://|, '//')
|
16
18
|
end
|
17
19
|
|
18
20
|
s = '<script type="text/javascript">'
|
19
|
-
s += %Q~(function(){!function(a,b,c,d,e){return d="http"+("https:"===c?"s":"")+":"+d,a.planBCDObject=e,a[e]||(a[e]=function(){var b;return((b=a[e]).q||(b.q=[])).push(arguments),a[e].l=1*new Date}),b.write(unescape('%3Cscript type="text/javascript" src="'+d+'"%3E%3C/script%3E'))}(window,document,document.location.protocol,"#{
|
21
|
+
s += %Q~(function(){!function(a,b,c,d,e){return d="http"+("https:"===c?"s":"")+":"+d,a.planBCDObject=e,a[e]||(a[e]=function(){var b;return((b=a[e]).q||(b.q=[])).push(arguments),a[e].l=1*new Date}),b.write(unescape('%3Cscript type="text/javascript" src="'+d+'"%3E%3C/script%3E'))}(window,document,document.location.protocol,"#{html_escape(js_url)}","pbcd")}).call(this);~
|
20
22
|
s += '</script>'
|
21
23
|
|
22
24
|
s.html_safe
|
@@ -2,11 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe PlanBCD::Rails::Middleware do
|
4
4
|
let(:app) { double call: [200, {'Content-Type' => 'text/html; charset=utf-8'}, ['<html><head>something</head><body></body></html>']] }
|
5
|
-
let(:
|
5
|
+
let(:js_url) { '//planb.cd/test.js' }
|
6
6
|
subject { PlanBCD::Rails::Middleware.new(app) }
|
7
7
|
before do
|
8
8
|
PlanBCD::Rails.configure do |c|
|
9
|
-
c.
|
9
|
+
c.js_url = js_url
|
10
10
|
c.auto_insert = true
|
11
11
|
end
|
12
12
|
end
|
@@ -46,7 +46,7 @@ describe PlanBCD::Rails::Middleware do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
context "no js" do
|
49
|
-
let(:
|
49
|
+
let(:js_url) { nil }
|
50
50
|
it "does not raise error but write the log" do
|
51
51
|
expect($stderr).to receive(:write).with(/^Failed to insert planbcd tag: /)
|
52
52
|
expect {
|
@@ -4,24 +4,24 @@ describe PlanBCD::Rails::ViewHelpers do
|
|
4
4
|
include PlanBCD::Rails::ViewHelpers
|
5
5
|
|
6
6
|
describe "#pbcd_init" do
|
7
|
-
let(:
|
7
|
+
let(:js_url) { '//planb.cd/test.js' }
|
8
8
|
before do
|
9
9
|
PlanBCD::Rails.configure do |c|
|
10
|
-
c.
|
10
|
+
c.js_url = js_url
|
11
11
|
end
|
12
12
|
end
|
13
13
|
it "generate planbcd tag" do
|
14
14
|
expect(pbcd_init).to eq(%Q~<script type=\"text/javascript\">(function(){!function(a,b,c,d,e){return d=\"http\"+(\"https:\"===c?\"s\":\"\")+\":\"+d,a.planBCDObject=e,a[e]||(a[e]=function(){var b;return((b=a[e]).q||(b.q=[])).push(arguments),a[e].l=1*new Date}),b.write(unescape('%3Cscript type=\"text/javascript\" src=\"'+d+'\"%3E%3C/script%3E'))}(window,document,document.location.protocol,\"//planb.cd/test.js\",\"pbcd\")}).call(this);</script>~)
|
15
15
|
end
|
16
|
-
context "
|
17
|
-
let(:
|
16
|
+
context "js_url has scheme" do
|
17
|
+
let(:js_url) { 'http://planb.cd/test.js' }
|
18
18
|
it "generate planbcd tag without scheme" do
|
19
19
|
expect(pbcd_init).to eq(%Q~<script type=\"text/javascript\">(function(){!function(a,b,c,d,e){return d=\"http\"+(\"https:\"===c?\"s\":\"\")+\":\"+d,a.planBCDObject=e,a[e]||(a[e]=function(){var b;return((b=a[e]).q||(b.q=[])).push(arguments),a[e].l=1*new Date}),b.write(unescape('%3Cscript type=\"text/javascript\" src=\"'+d+'\"%3E%3C/script%3E'))}(window,document,document.location.protocol,\"//planb.cd/test.js\",\"pbcd\")}).call(this);</script>~)
|
20
20
|
end
|
21
21
|
end
|
22
|
-
context "
|
22
|
+
context "js_url is proc" do
|
23
23
|
let(:a_controller) { double }
|
24
|
-
let(:
|
24
|
+
let(:js_url) { proc { |controller| '//planb.cd/proc.js' } }
|
25
25
|
before do
|
26
26
|
allow(self).to receive(:controller).and_return(a_controller)
|
27
27
|
end
|
@@ -29,16 +29,16 @@ describe PlanBCD::Rails::ViewHelpers do
|
|
29
29
|
expect(pbcd_init).to eq(%Q~<script type=\"text/javascript\">(function(){!function(a,b,c,d,e){return d=\"http\"+(\"https:\"===c?\"s\":\"\")+\":\"+d,a.planBCDObject=e,a[e]||(a[e]=function(){var b;return((b=a[e]).q||(b.q=[])).push(arguments),a[e].l=1*new Date}),b.write(unescape('%3Cscript type=\"text/javascript\" src=\"'+d+'\"%3E%3C/script%3E'))}(window,document,document.location.protocol,\"//planb.cd/proc.js\",\"pbcd\")}).call(this);</script>~)
|
30
30
|
end
|
31
31
|
end
|
32
|
-
context "
|
33
|
-
let(:
|
32
|
+
context "js_url is nil" do
|
33
|
+
let(:js_url) { nil }
|
34
34
|
it "raises error" do
|
35
35
|
expect {
|
36
36
|
pbcd_init
|
37
37
|
}.to raise_error(PlanBCD::Rails::RuntimeError)
|
38
38
|
end
|
39
39
|
end
|
40
|
-
context "
|
41
|
-
let(:
|
40
|
+
context "js_url is empty" do
|
41
|
+
let(:js_url) { '' }
|
42
42
|
it "raises error" do
|
43
43
|
expect {
|
44
44
|
pbcd_init
|