phantomjs.rb 1.0.2 → 2.0.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 +7 -0
- data/CHANGELOG +4 -0
- data/README.md +61 -3
- data/lib/phantomjs.rb +20 -14
- data/lib/phantomjs/version.rb +1 -1
- data/spec/phantomjs_spec.rb +31 -0
- metadata +11 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b301765a3009c343d855a4a7fc373dbeaf1fdb1d
|
4
|
+
data.tar.gz: d9a337020722eb4f3d228253502668e4cc4b1f40
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 765641c2ac1344df5808265990d192a25910d28240a6c8188a1cf50ab0cc1497003f27cd8cd8801f20f7dfbb43d7a70ca2da92fbc75889fcf6dbb910861ba8a6
|
7
|
+
data.tar.gz: 1c4d8c39817a207f91714b1039bc9db17a7b92fac2a5f30588886b313670f7e3489d29a5c896177d2ac3832c7df943f09aa7083b779eb7c39ca6c3fea29ca876
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -16,10 +16,68 @@ gem install phantomjs.rb
|
|
16
16
|
|
17
17
|
## Usage
|
18
18
|
|
19
|
+
### Pass a file
|
20
|
+
|
21
|
+
```js
|
22
|
+
// my_runner.js
|
23
|
+
var arg1 = phantom.args[0];
|
24
|
+
var arg2 = phantom.args[1];
|
25
|
+
console.log(arg1 + ' ' + arg2);
|
26
|
+
```
|
27
|
+
|
28
|
+
Then in ruby:
|
29
|
+
|
30
|
+
```rb
|
31
|
+
Phantomjs.run('my_runner.js', 'hello', 'world')
|
32
|
+
#=> 'hello world'
|
33
|
+
```
|
34
|
+
|
35
|
+
### Pass a script
|
36
|
+
|
37
|
+
You can also pass a javascript string as an argument and the gem
|
38
|
+
will create a temporary file for it and run the script.
|
39
|
+
|
40
|
+
NOTE: Just don't forget to call `phantom.exit`.
|
41
|
+
|
42
|
+
```rb
|
43
|
+
js = <<JS
|
44
|
+
console.log(phantom.args[0] + ' ' + phantom.args[1]);
|
45
|
+
phantom.exit();
|
46
|
+
JS
|
47
|
+
|
48
|
+
Phantomjs.run(js, 'hello', 'world')
|
49
|
+
#=> 'hello world'
|
50
|
+
```
|
51
|
+
|
52
|
+
### But what about async scripts?
|
53
|
+
|
54
|
+
Well it works for that too!
|
55
|
+
|
19
56
|
```rb
|
20
|
-
|
21
|
-
|
22
|
-
|
57
|
+
js = <<JS
|
58
|
+
ctr = 0;
|
59
|
+
setInterval(function() {
|
60
|
+
console.log('ctr is: ' + ctr);
|
61
|
+
ctr++;
|
62
|
+
|
63
|
+
if (ctr == 3) {
|
64
|
+
phantom.exit();
|
65
|
+
}
|
66
|
+
}, 5000);
|
67
|
+
JS
|
68
|
+
|
69
|
+
Phantomjs.inline(js) do |line|
|
70
|
+
p line
|
71
|
+
end
|
72
|
+
#=> ctr is: 0
|
73
|
+
ctr is: 1
|
74
|
+
ctr is: 2
|
75
|
+
```
|
76
|
+
|
77
|
+
## Running the tests
|
78
|
+
|
79
|
+
```
|
80
|
+
bundle exec rake spec
|
23
81
|
```
|
24
82
|
|
25
83
|
## License
|
data/lib/phantomjs.rb
CHANGED
@@ -1,29 +1,35 @@
|
|
1
|
+
require 'tempfile'
|
1
2
|
require "phantomjs/version"
|
2
3
|
require 'phantomjs/errors'
|
3
4
|
|
4
5
|
class Phantomjs
|
5
6
|
EXEC = 'phantomjs'
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
# script - The absolute path to the script
|
10
|
-
# *args - The arguments to pass to the script
|
11
|
-
#
|
12
|
-
# Returns the stdout output of phantomjs
|
13
|
-
def self.run(script, *args)
|
14
|
-
epath = File.expand_path(script)
|
15
|
-
|
8
|
+
def self.run(path, *args)
|
9
|
+
epath = File.expand_path(path)
|
16
10
|
raise NoSuchPathError.new(epath) unless File.exist?(epath)
|
11
|
+
block = block_given? ? Proc.new : nil
|
12
|
+
execute(epath, args, block)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.inline(script, *args)
|
16
|
+
file = Tempfile.new('script.js')
|
17
|
+
file.write(script)
|
18
|
+
file.close
|
19
|
+
block = block_given? ? Proc.new : nil
|
20
|
+
execute(file.path, args, block)
|
21
|
+
end
|
17
22
|
|
18
|
-
|
23
|
+
private
|
19
24
|
|
25
|
+
def self.execute(path, arguments, block)
|
20
26
|
begin
|
21
|
-
if
|
22
|
-
IO.popen([EXEC,
|
23
|
-
|
27
|
+
if block
|
28
|
+
IO.popen([EXEC, path, arguments].flatten).each_line do |line|
|
29
|
+
block.call(line)
|
24
30
|
end
|
25
31
|
else
|
26
|
-
IO.popen([EXEC,
|
32
|
+
IO.popen([EXEC, path, arguments].flatten).read
|
27
33
|
end
|
28
34
|
rescue Errno::ENOENT
|
29
35
|
raise CommandNotFoundError.new('Phantomjs is not installed')
|
data/lib/phantomjs/version.rb
CHANGED
data/spec/phantomjs_spec.rb
CHANGED
@@ -66,4 +66,35 @@ describe Phantomjs do
|
|
66
66
|
output.should eq("bar\nfoo bar\nfoo2\n")
|
67
67
|
end
|
68
68
|
end
|
69
|
+
|
70
|
+
describe '.inline' do
|
71
|
+
it 'accepts and runs a script as an argument' do
|
72
|
+
js = %q(
|
73
|
+
console.log(phantom.args[0]);
|
74
|
+
phantom.exit();
|
75
|
+
)
|
76
|
+
result = Phantomjs.inline(js, 'works!')
|
77
|
+
result.should eq("works!\n")
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'accepts a block as an argument' do
|
81
|
+
js = %q(
|
82
|
+
ctr = 0;
|
83
|
+
setInterval(function() {
|
84
|
+
if (ctr == 3) {
|
85
|
+
phantom.exit();
|
86
|
+
}
|
87
|
+
console.log('ctr is ' + ctr);
|
88
|
+
ctr++;
|
89
|
+
}, 1000)
|
90
|
+
console.log('running interval')
|
91
|
+
)
|
92
|
+
expected = "running interval\nctr is 0\nctr is 1\nctr is 2\n"
|
93
|
+
str = '';
|
94
|
+
result = Phantomjs.inline(js) do |line|
|
95
|
+
str << line
|
96
|
+
end
|
97
|
+
str.should eq(expected)
|
98
|
+
end
|
99
|
+
end
|
69
100
|
end
|
metadata
CHANGED
@@ -1,46 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phantomjs.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- William Estoque
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-10-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
description: Ruby wrapper for phantomjs
|
@@ -66,33 +61,26 @@ files:
|
|
66
61
|
- spec/runner.js
|
67
62
|
homepage: http://westoque.com
|
68
63
|
licenses: []
|
64
|
+
metadata: {}
|
69
65
|
post_install_message:
|
70
66
|
rdoc_options: []
|
71
67
|
require_paths:
|
72
68
|
- lib
|
73
69
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
70
|
requirements:
|
76
|
-
- -
|
71
|
+
- - '>='
|
77
72
|
- !ruby/object:Gem::Version
|
78
73
|
version: '0'
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
hash: -794486166950785980
|
82
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
75
|
requirements:
|
85
|
-
- -
|
76
|
+
- - '>='
|
86
77
|
- !ruby/object:Gem::Version
|
87
78
|
version: '0'
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
hash: -794486166950785980
|
91
79
|
requirements: []
|
92
80
|
rubyforge_project: phantomjs.rb
|
93
|
-
rubygems_version:
|
81
|
+
rubygems_version: 2.0.3
|
94
82
|
signing_key:
|
95
|
-
specification_version:
|
83
|
+
specification_version: 4
|
96
84
|
summary: Ruby wrapper for phantomjs
|
97
85
|
test_files:
|
98
86
|
- spec/phantomjs_spec.rb
|