ghost_in_the_post 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94da021e6f8b23bd606f975de8e4130d6a776a9d
4
- data.tar.gz: 9f8cd6d8aea34ece07434229d84ca35388bfde5d
3
+ metadata.gz: 6561f125f9d69483b0e7179f0cb1369e4d5fab94
4
+ data.tar.gz: 089cd0a208b3ad1b1bf72f134adf049ca167820c
5
5
  SHA512:
6
- metadata.gz: 0edf5ce3439fd879eb666ca6dd0491e83fbde0c591ec63eb25c2b191aa92e25b721e3072f592e4912f0101a8cc5cc0172f0ab6988b33316612ea1bb6fc3c681c
7
- data.tar.gz: d279fb5c28e64647262a967b8189daa03cd8540ccc3d02c3d99eeaa81ae3a8c59061bfe6b9ca115d05de7a2aa1d6129aa43f6fd17e3862b849bb1b5ed887dade
6
+ metadata.gz: 898b9dbbaf58f25ca5afb4c732a1aba39c6bc09e7b313771cc5e645d796760a2a143a78ec08aaebd468d16447c952af4a1fe46042c4a548098d6e67248152c5e
7
+ data.tar.gz: a43d7270016d22ca4a160ecd1363b51f74b8a61018ed5d0402bc9c8a8afab62408a5b9e05cab61ad7c155ff5390ec4d065c5dad7b0dbd20826b9022baada2e2f
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var system = require('system'),
3
3
  page = require('webpage').create(),
4
- html = system.args[1], //tmp file of the html to be processed
4
+ address = system.args[1], //tmp file of the html to be processed
5
5
  timeout = parseInt(system.args[4]) || 1000, //return page contents after a timeout
6
6
  wait_event = system.args[5], //return page contents after an event
7
7
  error_tag = "[GHOSTINTHEPOST-STATICIZE-ERROR]";
@@ -46,4 +46,4 @@ page.onLoadFinished = function(status){
46
46
  };
47
47
 
48
48
  //load html content
49
- page.setContent(html, 'ghost_in_the_post');
49
+ page.open("file://"+address)
@@ -15,23 +15,37 @@ module GhostInThePost
15
15
  def transform
16
16
  @inliner.inline
17
17
  p @inliner.html if GhostInThePost.debug
18
- @inliner.html = checkError(IO.popen(command){|io| io.read})
18
+ begin
19
+ htmlfile = html_file(@inliner.html)
20
+ @inliner.html = checkError(IO.popen(command(htmlfile)){|io| io.read})
21
+ ensure
22
+ htmlfile.unlink unless htmlfile.nil?
23
+ end
19
24
  @inliner.remove_all_script if GhostInThePost.remove_js_tags
20
25
  @inliner.html
21
26
  end
22
27
 
23
28
  private
24
29
 
25
- def command
30
+ def command html_file
26
31
  [
27
32
  GhostInThePost.phantomjs_path,
28
33
  PHANTOMJS_SCRIPT,
29
- @inliner.html,
34
+ html_file.path,
30
35
  @timeout,
31
36
  @wait_event,
32
37
  ].map(&:to_s)
33
38
  end
34
39
 
40
+ #generate a tempfile with all the html that we need so that phantom can inject
41
+ #easily and not have to max out a single command
42
+ def html_file(html)
43
+ file = Tempfile.new(['inject', '.html'])
44
+ file.write(html)
45
+ file.close #closing the file makes it accessible by phantom
46
+ file
47
+ end
48
+
35
49
  def checkError output
36
50
  raise GhostJSError.new(output.gsub(ERROR_TAG, "")) if output.start_with?(ERROR_TAG)
37
51
  output
@@ -1,3 +1,3 @@
1
1
  module GhostInThePost
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- ghost_in_the_post (0.0.5)
4
+ ghost_in_the_post (0.0.7)
5
5
  nokogiri
6
6
  rails (~> 4.2.3)
7
7
 
@@ -494,3 +494,7 @@ AutoMailer#normal_email: processed outbound mail in 545.1ms
494
494
  Rendered auto_mailer/normal_email.text (0.3ms)
495
495
 
496
496
  AutoMailer#normal_email: processed outbound mail in 542.3ms
497
+ Rendered auto_mailer/normal_email.html.erb (229.4ms)
498
+ Rendered auto_mailer/normal_email.text (0.4ms)
499
+
500
+ AutoMailer#normal_email: processed outbound mail in 552.5ms
@@ -3,6 +3,7 @@ require "spec_helper"
3
3
  module GhostInThePost
4
4
  describe PhantomTransform do
5
5
  let(:html){"<html><head><script></script></head><body><div id='test'></div></body></html>"}
6
+ let(:html_path){"/this/is/path"}
6
7
  let(:js){"(function(){document.getElementById('test').innerHTML='complete';})()"}
7
8
  let(:included_scripts){["application.js"]}
8
9
  subject {PhantomTransform.new(html, nil, nil,included_scripts)}
@@ -41,13 +42,20 @@ module GhostInThePost
41
42
  @inliner = JsInline.new(html)
42
43
  allow(@inliner).to receive(:inline)
43
44
  allow(JsInline).to receive(:new){@inliner}
45
+
46
+ @file = Object.new
47
+ allow(Tempfile).to receive(:new){@file}
48
+ allow(@file).to receive(:path){html_path}
49
+ allow(@file).to receive(:write)
50
+ allow(@file).to receive(:close)
51
+ allow(@file).to receive(:unlink)
44
52
  end
45
53
 
46
54
  it "should call IO.popen with arguments" do
47
55
  expect(IO).to receive(:popen).with([
48
56
  GhostInThePost.phantomjs_path,
49
57
  GhostInThePost::PhantomTransform::PHANTOMJS_SCRIPT,
50
- @inliner.html,
58
+ html_path,
51
59
  "1000",
52
60
  "ghost_in_the_post:done",
53
61
  ]).and_return html
@@ -66,6 +74,26 @@ module GhostInThePost
66
74
  subject.transform
67
75
  end
68
76
 
77
+ it "should create a temp file for the html" do
78
+ allow(IO).to receive(:popen).and_return ""
79
+ file = Object.new
80
+ expect(Tempfile).to receive(:new){file}
81
+ allow(file).to receive(:path){html_path}
82
+ expect(file).to receive(:write)
83
+ expect(file).to receive(:close)
84
+ expect(file).to receive(:unlink)
85
+ subject.transform
86
+ end
87
+
88
+ it "should unlink file even if there was an error" do
89
+ html_file = Object.new
90
+ expect(subject).to receive(:html_file){html_file}
91
+ allow(html_file).to receive(:path){html_path}
92
+ expect(html_file).to receive(:unlink)
93
+ allow(IO).to receive(:popen) {raise ArgumentError}
94
+ expect{subject.transform}.to raise_error ArgumentError
95
+ end
96
+
69
97
  end
70
98
  end
71
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghost_in_the_post
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Anema