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