auto_screenshot 0.0.2 → 0.0.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1151c54fb0fbb5d3ea5e8b387bb3d64cd8eabb54
4
+ data.tar.gz: 93dcf708c899d050d031473d139d4cc5636351aa
5
+ SHA512:
6
+ metadata.gz: f091e87e7bae90e61dad47ba510a9a653928f5e8e090d7e728c2bb1463852900bbea2334e8478bc37a4a26410c5aed51a5684b57d1199bffe64c2c219ddb6687
7
+ data.tar.gz: c3a77ce912c5bf587e48f5370d72fe59cdba4e991d122db73bfe7187f583627340904d0b329f9e909d421567ce327dbcda95a6547d2d6c95d01c807787858863
data/.gitignore CHANGED
@@ -12,6 +12,8 @@ lib/bundler/man
12
12
  pkg
13
13
  rdoc
14
14
  spec/reports
15
- test/tmp
16
- test/version_tmp
15
+ test/
17
16
  tmp
17
+ screenshots
18
+ .DS_Store
19
+ .rvmrc
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --format progress
3
+ -fd
4
+ --drb
data/Gemfile CHANGED
@@ -2,10 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in auto_screenshot.gemspec
4
4
  gemspec
5
-
6
- gem 'capybara'
7
- gem 'json'
8
-
9
- group :development do
10
- gem 'pry'
11
- end
data/README.md CHANGED
@@ -1,49 +1,84 @@
1
- Auto Screenshot
2
- ===============
1
+ # AutoScreenshot
3
2
 
4
- A small library designed to help the document web products.
3
+ Built to capture screenshots of a list of webpages in an automated fashion.
5
4
 
6
- ## Usage
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'auto_screenshot'
10
+
11
+ And then run:
12
+
13
+ bundle
14
+
15
+ Or install it yourself as:
7
16
 
8
17
  gem install auto_screenshot
9
18
 
10
- ### Basics
19
+ ## Options
20
+
21
+ ### URLs
22
+
23
+ An array of valid URLs. Pretty simple.
11
24
 
12
- Pass in an array of URL's,
25
+ ### Folder
13
26
 
14
- urls = ["http://domain.lvh.me:3000", "http://domain.lvh.me:3000/link/1"]
15
- s = Screenshot.new(:urls => urls)
27
+ `folder` is where the screenshots will be saved. The default location is the `screenshots` folder based on where the program is run. But, the example below passes a specific folder path to save screenshots at.
28
+
29
+ client = AutoScreenshot::Screenshot.new(:folder => '/path/to/folder/')
30
+
31
+ ### Action Map
32
+
33
+ `action_map` is a ruby hash. each key of the hash is a full URL string
34
+ and each key is a symbol. The symbol corresponds to a name of a method like `wait`. Here is an example:
35
+
36
+ action_map = {
37
+ "http://example.com/page" => :wait
38
+ }
39
+
40
+ And a custom method could look like:
41
+
42
+ def wait
43
+ sleep 10 # To allow you to login or something
44
+ end
45
+
46
+ ## Usage
16
47
 
17
- read from a [.json](/links.json) file,
48
+ AutoScreenshot saves screenshots of webpages as .png files in a folder. Create a Screenshot client and specify an array of URLs to capture.
18
49
 
19
- s = Screenshot.new(:file => "test.json") # an array of URL's as string
50
+ #### Create a Client. Then set options.
20
51
 
21
- or, read a [.rb](/links.rb) file.
52
+ client = AutoScreenshot::Screenshot.new #=> get a Screenshot object
53
+ client.urls = ["http://google.com, http://github.com"]
54
+ client.folder = "/custom/folder/path"
55
+ client.action_map = {
56
+ "http://example.com/do-something-custom-at-this-url" => :custom_method
57
+ }
22
58
 
23
- s = Screenshot.new(:file => "/users/name/path/to/links.rb")
24
59
 
25
- Run Capybara (Selenium) and Firefox.
60
+ or
26
61
 
27
- s.go # screenshots are saved to the /screenshots directory as .png files.
62
+ #### Create a Client with options.
28
63
 
29
- ### Logging in and custom stuff
64
+ client = AutoScreenshot::Screenshot.new(:urls => [], :folder => "/custom/folder/path", :action_map => {@url_string => :custom_method})
30
65
 
31
- [Action Map](/action_map.rb) - an action map allows you to specify certain URL's that call some ruby code that you write. I built this to accomodate logins. It can be used for whatever.
66
+ ## Contributing
32
67
 
33
- s = Screenshot.new({ :file => "/some/links/in/ruby.rb",
34
- :action_map => "/users/name/path/to/action_map.rb" })
68
+ 1. Say [hi](https://twitter.com/randw) and let me know you're using aut
69
+ 1. Fork it
70
+ 1. Create your feature branch (`git checkout -b my-new-feature`)
71
+ 1. Commit your changes (`git commit -am 'Add some feature'`)
72
+ 1. Push to the branch (`git push origin my-new-feature`)
73
+ 1. Create new Pull Request
35
74
 
36
- load 'lib/auto_screenshot.rb'
75
+ ### During Development
37
76
 
38
- s = AutoScreenshot::Screenshot.new({
39
- :links => "/users/ryanw/Desktop/ci.rb",
40
- :action_mappings => "/path/to/action_mappings.json",
41
- :action_map => "/path/to/action_map.rb",
42
- :folder => "/path/to/screenshot_images"
43
- })
77
+ Run this from the `auto_screenshot/` directory.
44
78
 
79
+ irb
80
+ load 'lib/auto_screenshot.rb'
45
81
 
46
- #### Remember
82
+ And, to build the .gem:
47
83
 
48
- * Ensure your website is running when testing locally.
49
- * Don't abuse anybody's website.
84
+ gem build auto_screenshot.gemspec
@@ -1,18 +1,29 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/auto_screenshot/version', __FILE__)
1
+ #encoding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'auto_screenshot/version'
3
5
 
4
6
  Gem::Specification.new do |gem|
7
+ gem.name = "auto_screenshot"
8
+ gem.version = AutoScreenshot::VERSION
5
9
  gem.authors = ["Ryan Wold"]
6
10
  gem.email = ["wold@afomi.com"]
7
11
  gem.description = %q{'Automatically screenshot webpages'}
8
12
  gem.summary = %q{'Automating webpage screenshots'}
9
13
  gem.homepage = "http://github.com/afomi/auto_screenshot"
14
+ gem.license = "MIT"
10
15
 
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.files = `git ls-files -z`.split("\x0")
17
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
13
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "auto_screenshot"
15
19
  gem.require_paths = ["lib"]
16
- gem.version = AutoScreenshot::VERSION
17
- gem.add_runtime_dependency 'capybara'
20
+
21
+ gem.add_dependency "capybara"
22
+ gem.add_dependency "json"
23
+ gem.add_dependency "nokogiri"
24
+ gem.add_dependency "selenium-webdriver"
25
+ gem.add_development_dependency "bundler"
26
+ gem.add_development_dependency "pry"
27
+ gem.add_development_dependency "rake"
28
+ gem.add_development_dependency "rspec"
18
29
  end
@@ -0,0 +1,9 @@
1
+ [
2
+ "http://lvh.me/1",
3
+ "http://lvh.me/2",
4
+ "http://lvh.me/3",
5
+ "http://lvh.me/4",
6
+ "http://lvh.me/5",
7
+ "http://lvh.me/6",
8
+ "http://lvh.me/7"
9
+ ]
@@ -0,0 +1,17 @@
1
+ # Sample links.rb file for AutoScreenshot
2
+ #
3
+ # Important: Be sure to return an Array of URL's
4
+
5
+ links = []
6
+
7
+ links << "http://lvh.me/1"
8
+ links << "http://lvh.me/2"
9
+ # links << "http://lvh.me/3"
10
+
11
+ (4..10).each do |i|
12
+ links << "http://lvh.me/#{i}"
13
+ end
14
+
15
+ links << "http://dev.lvh.me:3000/login"
16
+
17
+ $links = links
@@ -1,51 +1,48 @@
1
1
  require "auto_screenshot/version"
2
-
3
- require 'uri'
4
- require 'json'
5
2
  require 'capybara/dsl'
3
+ require 'json'
4
+ require 'uri'
6
5
 
7
6
  module AutoScreenshot
8
7
 
9
8
  class Screenshot
9
+ attr_accessor :urls, :folder, :action_map
10
+
10
11
  include Capybara::DSL
11
12
  Capybara.default_driver = :selenium
12
13
 
13
- attr_accessor :links, :folder, :action_mappings, :action_map
14
-
15
- # Pass in an array of URL's, with http(s)
16
- # or
17
- # Pass in a .json or .rb file of links
14
+ # urls: an array of full URL strings
15
+ # folder: where to store the files
16
+ # action_map: a hash where
17
+ # keys are URL's that are visited
18
+ # values are symbols for custom actions
18
19
  #
19
- # pass in an action_map
20
- # pass in a folder path to where to store the screenshots
21
- def initialize(opts = { :links => "", :action_mappings => [], :action_map => "", :folder => "" })
22
- raise Exception, "please pass in an array of urls like {:urls => []}, or a file, like {:file => \"test.json\"}" unless opts[:links]
23
-
24
- @links = opts[:links]
25
- if @links.class == Array
26
- @links = links
27
- elsif links.class == String
28
- ext = File.extname(@links)
29
- if ext == ".rb"
30
- load @links
31
- @links = $links
32
- elsif ext == ".json"
33
- @links = JSON.parse(File.open(@links, "r").read)
34
- end
35
- end
36
-
37
- @action_mappings = set_action_mappings(opts[:action_mappings])
38
- load opts[:action_map].to_s
39
- @folder = opts[:folder] ||= "screenshots"
20
+ # see the `wait` method for an example of mapping an action
21
+ def initialize(options = {
22
+ urls: [],
23
+ folder: nil,
24
+ action_map: {}
25
+ })
26
+ @urls = options[:urls]
27
+ @folder = options[:folder] ||= "screenshots"
28
+ @action_map = options[:action_map]
40
29
  end
41
30
 
42
- def go
31
+ # Passing `dry_run=true`
32
+ # only lists the URL's that would be processed
33
+ # but does not take screenshots
34
+ def go(dry_run = false)
35
+ raise 'no URLs specified' if @urls.empty?
36
+
43
37
  errors = []
44
- @links.each do |url|
38
+
39
+ @urls.each do |url|
40
+ p url; next if dry_run
41
+
45
42
  begin
46
43
  puts "Getting #{url}"
47
44
  visit "#{url}"
48
-
45
+ sleep 3.0 # arbitrary sleep to allow heavily ajax-y pages to load
49
46
  snap
50
47
  actions(url)
51
48
  rescue => err
@@ -55,31 +52,32 @@ module AutoScreenshot
55
52
  end
56
53
  end
57
54
 
58
- puts errors
55
+ errors
59
56
  end
60
57
 
61
- # Load an action map .json file
62
- # see /action_mappings.json as an example
63
- # {
64
- # "url":<method in action_map.rb>
65
- # }
66
- def set_action_mappings(path)
67
- return {} if path && path.empty?
68
-
69
- json = File.open(path).read
70
- hash = JSON.parse(json)
71
- end
72
-
73
- # do a specific action for a url, like login
58
+ # Custom actions, based on a page url
59
+ # do a specific action for a url, like #wait
74
60
  def actions(url)
75
- if action_mappings.has_key?(url)
76
- sleep 10.0
77
- # self.send(action_mappings[url])
61
+ if action_map && action_map.has_key?(url)
62
+ self.send(action_map[url])
78
63
  else
79
64
  nil
80
65
  end
81
66
  end
82
67
 
68
+ # Define custom actions by monkey-patching.
69
+ # Use the custom actions
70
+ # by passing action_map: { :url => :method }
71
+ #
72
+ # class AutoScreenshot::Screenshot
73
+ # def your_custom_action
74
+ # end
75
+ # end
76
+ def wait
77
+ sleep 10.0
78
+ end
79
+
80
+ # TODO: Helper Method
83
81
  def grab_links(url)
84
82
  links = []
85
83
 
@@ -91,13 +89,39 @@ module AutoScreenshot
91
89
  links.uniq
92
90
  end
93
91
 
94
- def snap
95
- page.execute_script('$(window).width(1200)')
96
- name = page.current_url.gsub("https:\/\/", "").gsub("http:\/\/", "").gsub(":", "").gsub("\/", "-").gsub("&", "-").gsub("?", "_").gsub("dev.lvh.me3000-", "").gsub("admin.lvh.me3000-", "").gsub("localhost3001-", "").gsub("dev.dev.lvh.me3000-", "").gsub("test.civicideasstaging.com", "")
97
- Capybara.current_session.driver.browser.manage.window.resize_to(1000, 800)
98
- Capybara.current_session.driver.browser.save_screenshot("#{@folder}/#{name}.png")
92
+ # passing a `descriptor`
93
+ # adds a string to the filename, so you can name a sub-state for a page
94
+ def snap(descriptor = "")
95
+ name = clean_url(page.current_url)
96
+
97
+ # Descriptor
98
+ name = name + (descriptor.empty? ? "" : "-state-#{descriptor}")
99
+ p "#snap", "name", name unless name.empty?
100
+
101
+ set_window_size
102
+
103
+ # Ensure @folder exists
104
+ FileUtils.mkdir_p(@folder) unless File.exists?(@folder)
105
+ Capybara.current_session.driver.browser.save_screenshot("#{@folder}/#{name}.png")
99
106
  end
100
107
 
101
- end
102
108
 
109
+ private
110
+
111
+ def clean_url(full_url)
112
+ p "#clean_url", full_url
113
+
114
+ full_url.gsub("https:\/\/", "")
115
+ .gsub("http:\/\/", "")
116
+ .gsub(":", "")
117
+ .gsub("\/", "-")
118
+ .gsub("&", "-")
119
+ .gsub("?", "_")
120
+ end
121
+
122
+ def set_window_size
123
+ Capybara.current_session.driver.browser.manage.window.resize_to(1200, 800)
124
+ end
125
+
126
+ end
103
127
  end
@@ -1,3 +1,3 @@
1
1
  module AutoScreenshot
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ describe AutoScreenshot::Screenshot do
4
+
5
+ describe "#initialize" do
6
+ context "no args" do
7
+ before do
8
+ @client = AutoScreenshot::Screenshot.new
9
+ end
10
+
11
+ it "instantiates" do
12
+ expect(@client.instance_variables).to match_array [:@urls, :@folder, :@action_map]
13
+ expect(@client.urls.size).to eq 0
14
+ expect(@client.action_map).to eq {}
15
+ expect(@client.folder).to eq 'screenshots'
16
+ end
17
+ end
18
+
19
+ context "with :urls" do
20
+ before do
21
+ @client = AutoScreenshot::Screenshot.new({
22
+ urls: [
23
+ "http://google.com",
24
+ "http://communicatingdesign.com"
25
+ ]
26
+ })
27
+ end
28
+
29
+ describe ".new" do
30
+ it "instantiates" do
31
+ expect(@client.urls.size).to eq 2
32
+ expect(@client.folder).to eq 'screenshots'
33
+ expect(@client.action_map).to eq {}
34
+ end
35
+ end
36
+ end
37
+
38
+ context "with :folder" do
39
+ before do
40
+ @client = AutoScreenshot::Screenshot.new({
41
+ folder: 'custom_folder',
42
+ urls: '[http://google.com]'
43
+ })
44
+ end
45
+
46
+ it "instantiates" do
47
+ expect(@client.folder).to eq 'custom_folder'
48
+ end
49
+ end
50
+
51
+ context "with :action_map" do
52
+ before do
53
+ @client = AutoScreenshot::Screenshot.new({
54
+ action_map: {
55
+ :url => :custom_method
56
+ }
57
+ })
58
+ end
59
+
60
+ it "instantiates" do
61
+ expect(@client.action_map).to eq ({
62
+ :url => :custom_method
63
+ })
64
+ end
65
+ end
66
+ end
67
+
68
+ describe "#go" do
69
+ before do
70
+ @client = AutoScreenshot::Screenshot.new({
71
+ urls: [
72
+ "http://google.com",
73
+ "http://communicatingdesign.com"
74
+ ]
75
+ })
76
+ end
77
+
78
+ describe "#go" do
79
+ before do
80
+ @client.go
81
+ end
82
+
83
+ it "save screenshots as .png on Filesystem" do
84
+ expect(Dir.glob("screenshots/communicatingdesign*.png").size).to eq 1
85
+ expect(Dir.glob("screenshots/www.google*.png").size).to eq 1
86
+ end
87
+ end
88
+ end
89
+
90
+ describe "#actions" do
91
+ end
92
+
93
+ describe "#grab_links" do
94
+ end
95
+
96
+ describe "#wait" do
97
+ # `wait` is an example of an action used by the `action_map`
98
+ end
99
+
100
+ describe "#snap" do
101
+ end
102
+
103
+ end
@@ -0,0 +1,85 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
4
+ # file to always be loaded, without a need to explicitly require it in any files.
5
+ #
6
+ # Given that it is always loaded, you are encouraged to keep this file as
7
+ # light-weight as possible. Requiring heavyweight dependencies from this file
8
+ # will add to the boot time of your test suite on EVERY test run, even for an
9
+ # individual file that may not need all of that loaded. Instead, make a
10
+ # separate helper file that requires this one and then use it only in the specs
11
+ # that actually need it.
12
+ #
13
+ # The `.rspec` file also contains a few flags that are not defaults but that
14
+ # users commonly want.
15
+ #
16
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
17
+ RSpec.configure do |config|
18
+
19
+ require 'auto_screenshot'
20
+ require 'pry'
21
+
22
+ # The settings below are suggested to provide a good initial experience
23
+ # with RSpec, but feel free to customize to your heart's content.
24
+
25
+ # These two settings work together to allow you to limit a spec run
26
+ # to individual examples or groups you care about by tagging them with
27
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
28
+ # get run.
29
+ config.filter_run :focus
30
+ config.run_all_when_everything_filtered = true
31
+
32
+ # Many RSpec users commonly either run the entire suite or an individual
33
+ # file, and it's useful to allow more verbose output when running an
34
+ # individual spec file.
35
+ if config.files_to_run.one?
36
+ # Use the documentation formatter for detailed output,
37
+ # unless a formatter has already been configured
38
+ # (e.g. via a command-line flag).
39
+ config.default_formatter = 'doc'
40
+ end
41
+
42
+ # Print the 10 slowest examples and example groups at the
43
+ # end of the spec run, to help surface which specs are running
44
+ # particularly slow.
45
+ config.profile_examples = 10
46
+
47
+ # Run specs in random order to surface order dependencies. If you find an
48
+ # order dependency and want to debug it, you can fix the order by providing
49
+ # the seed, which is printed after each run.
50
+ # --seed 1234
51
+ config.order = :random
52
+
53
+ config.before(:all, :type => :request) do
54
+ Capybara.current_session.driver.browser.manage.window.resize_to(1100, 800)
55
+ end
56
+
57
+ # Seed global randomization in this process using the `--seed` CLI option.
58
+ # Setting this allows you to use `--seed` to deterministically reproduce
59
+ # test failures related to randomization by passing the same `--seed` value
60
+ # as the one that triggered the failure.
61
+ Kernel.srand config.seed
62
+
63
+ # rspec-expectations config goes here. You can use an alternate
64
+ # assertion/expectation library such as wrong or the stdlib/minitest
65
+ # assertions if you prefer.
66
+ config.expect_with :rspec do |expectations|
67
+ # Enable only the newer, non-monkey-patching expect syntax.
68
+ # For more details, see:
69
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
70
+ expectations.syntax = :expect
71
+ end
72
+
73
+ # rspec-mocks config goes here. You can use an alternate test double
74
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
75
+ config.mock_with :rspec do |mocks|
76
+ # Enable only the newer, non-monkey-patching expect syntax.
77
+ # For more details, see:
78
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
79
+ mocks.syntax = :expect
80
+
81
+ # Prevents you from mocking or stubbing a method that does not exist on
82
+ # a real object. This is generally recommended.
83
+ mocks.verify_partial_doubles = true
84
+ end
85
+ end
metadata CHANGED
@@ -1,65 +1,171 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_screenshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ryan Wold
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-20 00:00:00.000000000Z
11
+ date: 2014-12-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: capybara
16
- requirement: &70237450785980 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70237450785980
25
- description: ! '''Automatically screenshot webpages'''
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: selenium-webdriver
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: "'Automatically screenshot webpages'"
26
126
  email:
27
127
  - wold@afomi.com
28
128
  executables: []
29
129
  extensions: []
30
130
  extra_rdoc_files: []
31
131
  files:
32
- - .gitignore
132
+ - ".gitignore"
133
+ - ".rspec"
33
134
  - Gemfile
34
135
  - LICENSE
35
136
  - README.md
36
137
  - Rakefile
37
138
  - auto_screenshot.gemspec
139
+ - examples/links.json
140
+ - examples/links.rb
38
141
  - lib/auto_screenshot.rb
39
142
  - lib/auto_screenshot/version.rb
143
+ - spec/lib/auto_screenshot_spec.rb
144
+ - spec/spec_helper.rb
40
145
  homepage: http://github.com/afomi/auto_screenshot
41
- licenses: []
146
+ licenses:
147
+ - MIT
148
+ metadata: {}
42
149
  post_install_message:
43
150
  rdoc_options: []
44
151
  require_paths:
45
152
  - lib
46
153
  required_ruby_version: !ruby/object:Gem::Requirement
47
- none: false
48
154
  requirements:
49
- - - ! '>='
155
+ - - ">="
50
156
  - !ruby/object:Gem::Version
51
157
  version: '0'
52
158
  required_rubygems_version: !ruby/object:Gem::Requirement
53
- none: false
54
159
  requirements:
55
- - - ! '>='
160
+ - - ">="
56
161
  - !ruby/object:Gem::Version
57
162
  version: '0'
58
163
  requirements: []
59
164
  rubyforge_project:
60
- rubygems_version: 1.8.15
165
+ rubygems_version: 2.4.3
61
166
  signing_key:
62
- specification_version: 3
63
- summary: ! '''Automating webpage screenshots'''
64
- test_files: []
65
- has_rdoc:
167
+ specification_version: 4
168
+ summary: "'Automating webpage screenshots'"
169
+ test_files:
170
+ - spec/lib/auto_screenshot_spec.rb
171
+ - spec/spec_helper.rb