prerender_rails_embedded 0.2.8 → 0.2.10

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2JmZjlkMzkxMTc2NTA3M2M1NzA1YjY0MTIzODMyMDM1MDk2OTFkOQ==
4
+ MzkxNDRhNzk4NzZiOWU3YWM2OTBiZjUyMmQ2NTg5MzAxZTNmMWE2Ng==
5
5
  data.tar.gz: !binary |-
6
- MDVlMjA2MzI1NWI4NjA0MGNkYmM2OTEzOTViNzRjNTQxZjlhMmJmZA==
6
+ NDBhMzNiYTM2YjU2YjNiMTZhNDc4ZTU5NDFlZjdjNzgxMTFhNzEyNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YzJlMWIxNzQ0NzQzYWJlNTkwM2Y4N2RjMTlkNmMyZGU4OWQ3MWE0MDRkMWQz
10
- NWZhYmM2ZWFjN2UwYjQ0NzU3ZDdjODUwMmM4ZjQyZjhlNmU4ZjlkYWE1ZGMw
11
- ZjVmMjU4MGM0NDQ3Y2IwNzJlM2MzMDA3NjIwMGU3MjQ1ZjQyMjM=
9
+ MjE1M2RhYjk3YTUxMGM4YmNmOWYxYzY0ZGI1NTE4NjQwNjZlN2I4NGE5Zjk1
10
+ MGEyMjM2NjEzYjliZGI1OTFkZTNkNDYxYTViODUxMzE0MWY2Y2EyZDRjN2Zh
11
+ YmM1MzNhZWE3NWJmOTNmYmQzZDI2NzJmZGY5YTVjNmE0ZGFmNjk=
12
12
  data.tar.gz: !binary |-
13
- MjJmNGQ5ZGQzM2JhNzA1MWVjN2UxYmYzNDYwODRlYzZkZmIwZGM2ZmIzODM4
14
- NDhmYjYzNTYxYjUwYzQzOTg2ZTQxZWQ3N2U5NmYxYjk3NzY5ZGI3OGYxYzk1
15
- YTc3ZGYyZWZiZDY0NWJmYmM2OGJmMzc1MjJlMTY1NjE0YTVlYTg=
13
+ ZDk2MjhjZGE2YjgwNDU5ZTg2MzM1NTcxYjYzYzkzNmE2NGIwY2JkNzdhMzYz
14
+ MWY4ZmZiYjA2MjBjOGM4ODZkNTY1YTE5MmNjMjM4MTBiMTQ3NWEyODBjODA3
15
+ YTEyYjg0OGZjYmIzNjEwNmY1YTY4MGVjOTU2MmZhMWQ5ZjVlNDY=
@@ -25,7 +25,17 @@ surrender.params = function() {
25
25
 
26
26
 
27
27
  surrender.javascriptToExecuteOnPage = function() {
28
+ function removeTag(tagName) {
29
+ var element = document.getElementsByTagName(tagName);
30
+ for (var index = element.length - 1; index >= 0; index--) {
31
+ element[index].parentNode.removeChild(element[index]);
32
+ }
33
+ }
34
+
28
35
  var processHtml = function() {
36
+ removeTag('script');
37
+ removeTag('iframe');
38
+
29
39
  if (!window.prerenderRailsEmbedded || !window.prerenderRailsEmbedded.filterHtmlOutput || typeof(window.prerenderRailsEmbedded.filterHtmlOutput) !== "function") {
30
40
  return document.documentElement.outerHTML;
31
41
  } else {
@@ -66,9 +76,14 @@ surrender.javascriptToExecuteOnPage = function() {
66
76
  }
67
77
  };
68
78
 
79
+ surrender.millisElapsed = function () {
80
+ return new Date().getTime() - this.requestStarted.getTime();
81
+ };
82
+
69
83
  surrender.serveHtml = function(html) {
70
84
  system.stdout.writeLine(html);
71
- this.logDebug('page returned to rails: ' + page.address);
85
+
86
+ this.logDebug('page returned to rails: ' + page.address + " (" + this.millisElapsed() + "ms)");
72
87
  phantom.exit(0);
73
88
  };
74
89
 
@@ -82,7 +97,6 @@ surrender.evaluateJavascriptOnPage = function(t, msPassed) {
82
97
 
83
98
  if (msPassed >= 20000) _this.logWarning("prerenderReady=true not found after 20s for page: " + page.url);
84
99
 
85
- _this.logDebug('js evaluated: ' + page.address);
86
100
  _this.serveHtml(out.html);
87
101
 
88
102
  } else {
@@ -96,11 +110,12 @@ surrender.run = function() {
96
110
 
97
111
  try {
98
112
 
99
- page.address = this.removeEscapedFragmentParameter(this.params().address);
113
+ page.address = this.replaceHostWithLocalhost(this.removeEscapedFragmentParameter(this.params().address));
100
114
  page.settings.userAgent = 'EtaliaBotAgent';
101
- page.settings.resourceTimeout = 10000;
115
+ page.settings.resourceTimeout = 15000;
102
116
 
103
117
  _this.logDebug('requested: ' + page.address);
118
+ surrender.requestStarted = new Date();
104
119
 
105
120
  page.open(page.address, function (st) {
106
121
  _this.logDebug('opened: ' + page.address + 'with status: ' + st);
@@ -121,16 +136,19 @@ surrender.run = function() {
121
136
  };
122
137
 
123
138
  page.onConsoleMessage = function(message, lineNum, sourceId) {
124
- //_this.logInfo('CONSOLE: ' + message + '(' + sourceId + '/L#"' + lineNum + '")');
139
+ _this.logInfo('CONSOLE: ' + message + '(' + sourceId + '/L#"' + lineNum + '")');
125
140
  };
126
141
 
127
142
  page.onResourceTimeout = function(request) {
128
143
  console.log('<html><head><meta name="robots" content="noindex, noarchive" /></head><body></body></html>');
129
144
  _this.logWarning('Response (#' + request.id + '): ' + JSON.stringify(request));
130
145
  setTimeout(function() { phantom.exit(1); }, 0); // workaround to avoid PhantomJS crashes
131
- }
132
- };
146
+ };
133
147
 
148
+ //page.onResourceRequested = function(requestData, networkRequest) {
149
+ // _this.logWarning('-------- (#' + requestData.id + '): ' + requestData.url + ' ' + JSON.stringify(requestData.headers));
150
+ //};
151
+ };
134
152
  surrender.removeEscapedFragmentParameter = function (addressUrl) {
135
153
  var parts = new URI(addressUrl);
136
154
 
@@ -148,13 +166,17 @@ surrender.removeEscapedFragmentParameter = function (addressUrl) {
148
166
  return newUrl;
149
167
  };
150
168
 
169
+ surrender.replaceHostWithLocalhost = function (addressUrl) {
170
+ this.logDebug(new URI(addressUrl).hostname('localhost'));
171
+ return new URI(addressUrl).hostname('localhost');
172
+ };
173
+
151
174
  surrender.logFilePath = function() {
152
175
  if (fs.exists("/opt/sites/frontend/current/log"))
153
176
  return "/opt/sites/frontend/current/log";
154
177
  else
155
178
  return "/tmp";
156
179
  };
157
-
158
180
  surrender.flog = function(message) {
159
181
  try {
160
182
  fs.write(this.logFilePath() + '/etalia-prerender.log', message + "\n", 'a');
@@ -45,7 +45,7 @@ module PrerenderRailsEmbedded
45
45
  end
46
46
 
47
47
  def self.phantomjs_invocation(url)
48
- [Phantomjs.path , '--load-images=false', '--ignore-ssl-errors=true', '--ssl-protocol=TLSv1', '--disk-cache=yes', '--max-disk-cache-size=524228', "#{File.dirname(__FILE__)}/prerender_rails_embedded.js", url]
48
+ [Phantomjs.path , '--load-images=false', '--ignore-ssl-errors=true', '--ssl-protocol=TLSv1', '--disk-cache=true', '--max-disk-cache-size=524228', "#{File.dirname(__FILE__)}/prerender_rails_embedded.js", url]
49
49
  end
50
50
 
51
51
  def self.local_renderer
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'prerender_rails_embedded'
5
- spec.version = '0.2.8'
5
+ spec.version = '0.2.10'
6
6
  spec.authors = ['Gian Carlo Pace', 'Luca Mirra']
7
7
  spec.email = %w(giancarlo.pace@etalia.net)
8
8
  spec.description = %q{A plugin for prerender_rails middleware to render JavaScript web app on the fly calling phantomjs directly}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prerender_rails_embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gian Carlo Pace
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-29 00:00:00.000000000 Z
12
+ date: 2015-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler