web_stat 0.2.7 → 0.3.0

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
  SHA256:
3
- metadata.gz: 32af8e84a325614bf546a76fdf603e592abbf4201a559857bc0964fe49226cc1
4
- data.tar.gz: 8b63075dbd78d2e4b7368cb6a0a4aa2f8ae655cf7f85b526bd413a5fa210fbc0
3
+ metadata.gz: 0f62b7ce2720dcd1851a3c0620af8da6e00313e1b5de918e8b1e23ceeeacee89
4
+ data.tar.gz: 1a52579415bf2a4f96efd39931ef41849751f693658f5cfbcd88202c680a446c
5
5
  SHA512:
6
- metadata.gz: 45a0fe16c58679cbea01c56710324a461da3bd5c48caa1ca44cf981b2f5443b6ed06ce1db84577edac968e7651cd47ec998ef331dbf47c7306b243a1190fa76d
7
- data.tar.gz: c391ce77bf97673c708821fa9067ba64e5b89fbf67d3490376341931f3b9ee6ecebf4a51e0abe69dcc827f7f35d7d6986af353ea2ab4f1d0945f4de2a7d34b2f
6
+ metadata.gz: 51b5d4fbc2e0969913cec3c1ae4b745cca8a790b4f9638d9a920d844840500424c69f18e7d3f58d2d870b8391e0817f06781699b302f36b2a68d81467608a867
7
+ data.tar.gz: 2d4ba4bfac9c5d5c76fcc48ba0202b7dbf223b4f42b7d6a649cce22c0742d6b7605c3386c93be2cb29487308714fc94fd2bf1063faf78bdcd5b7b6c5ab060d8b
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /.bundle
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
@@ -1 +1 @@
1
- 2.7.0
1
+ 2.7.1
@@ -0,0 +1,25 @@
1
+ # Define base image, you can use --build-arg
2
+ ARG base_image="newsdict/rails:ubuntu20.10_nvmv0.35.2_nodev14.3.0_rubyv2.7.1_sasscv2.3.0_ffiv1.13.1_chromedriver"
3
+ FROM $base_image
4
+
5
+ # Set locale
6
+ ENV LANG "C.UTF-8"
7
+ ENV NOKOGIRI_USE_SYSTEM_LIBRARIES "YES"
8
+
9
+ # Set correct environment variables.
10
+ RUN mkdir -p /var/www/docker
11
+ WORKDIR /var/www/docker
12
+
13
+ # Set up application
14
+ COPY . .
15
+
16
+ # Init gems
17
+ RUN echo "gem: --no-rdoc --no-ri" > ~/.gemrc
18
+ RUN . /etc/profile.d/rvm.sh && \
19
+ bundle config --global with 'development test' && \
20
+ bundle config --global system true && \
21
+ bundle config --global jobs 10 && \
22
+ bundle config --global build.nokogiri --use-system-libraries && \
23
+ bundle install
24
+
25
+ CMD ["bash"]
data/Gemfile CHANGED
@@ -1,6 +1,4 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "final_redirect_url", :git => "git@github.com:yubele/final_redirect_url.git"
4
-
5
3
  # Specify your gem's dependencies in web_stat.gemspec
6
4
  gemspec
@@ -1,13 +1,7 @@
1
- GIT
2
- remote: git@github.com:yubele/final_redirect_url.git
3
- revision: a8e8fb256f044606313d9726278516a0f24449d4
4
- specs:
5
- final_redirect_url (0.1.0)
6
-
7
1
  PATH
8
2
  remote: .
9
3
  specs:
10
- web_stat (0.2.7)
4
+ web_stat (0.3.0)
11
5
  bundler (>= 2.0.2)
12
6
  cld (>= 0.8.0)
13
7
  mechanize (>= 2.7)
@@ -15,25 +9,28 @@ PATH
15
9
  nokogiri (>= 1.10.4)
16
10
  ruby-readability (>= 0.7)
17
11
  sanitize (>= 5.0.0)
12
+ selenium-webdriver (= 3.142.7)
18
13
 
19
14
  GEM
20
15
  remote: https://rubygems.org/
21
16
  specs:
22
17
  addressable (2.7.0)
23
18
  public_suffix (>= 2.0.2, < 5.0)
19
+ byebug (11.1.3)
20
+ childprocess (3.0.0)
24
21
  cld (0.8.0)
25
22
  ffi
26
- coderay (1.1.2)
27
- connection_pool (2.2.2)
23
+ coderay (1.1.3)
24
+ connection_pool (2.2.3)
28
25
  crack (0.4.3)
29
26
  safe_yaml (~> 1.0.0)
30
- crass (1.0.5)
27
+ crass (1.0.6)
31
28
  diff-lcs (1.3)
32
29
  domain_name (0.5.20190701)
33
30
  unf (>= 0.0.5, < 1.0.0)
34
- ffi (1.11.3)
31
+ ffi (1.13.1)
35
32
  guess_html_encoding (0.0.11)
36
- hashdiff (1.0.0)
33
+ hashdiff (1.0.1)
37
34
  http-cookie (1.0.3)
38
35
  domain_name (~> 0.5)
39
36
  mechanize (2.7.6)
@@ -45,51 +42,58 @@ GEM
45
42
  nokogiri (~> 1.6)
46
43
  ntlm-http (~> 0.1, >= 0.1.1)
47
44
  webrobots (>= 0.0.9, < 0.2)
48
- method_source (0.9.2)
45
+ method_source (1.0.0)
49
46
  mime-types (3.3.1)
50
47
  mime-types-data (~> 3.2015)
51
- mime-types-data (3.2019.1009)
48
+ mime-types-data (3.2020.0512)
52
49
  mini_portile2 (2.4.0)
53
- natto (1.1.2)
50
+ natto (1.2.0)
54
51
  ffi (>= 1.9.0)
55
52
  net-http-digest_auth (1.4.1)
56
- net-http-persistent (3.1.0)
53
+ net-http-persistent (4.0.0)
57
54
  connection_pool (~> 2.2)
58
- nokogiri (1.10.7)
55
+ nokogiri (1.10.9)
59
56
  mini_portile2 (~> 2.4.0)
60
57
  nokogumbo (2.0.2)
61
58
  nokogiri (~> 1.8, >= 1.8.4)
62
59
  ntlm-http (0.1.1)
63
- pry (0.12.2)
64
- coderay (~> 1.1.0)
65
- method_source (~> 0.9.0)
66
- public_suffix (4.0.2)
60
+ pry (0.13.1)
61
+ coderay (~> 1.1)
62
+ method_source (~> 1.0)
63
+ pry-byebug (3.9.0)
64
+ byebug (~> 11.0)
65
+ pry (~> 0.13.0)
66
+ public_suffix (4.0.5)
67
67
  rake (13.0.1)
68
68
  rspec (3.9.0)
69
69
  rspec-core (~> 3.9.0)
70
70
  rspec-expectations (~> 3.9.0)
71
71
  rspec-mocks (~> 3.9.0)
72
- rspec-core (3.9.1)
73
- rspec-support (~> 3.9.1)
74
- rspec-expectations (3.9.0)
72
+ rspec-core (3.9.2)
73
+ rspec-support (~> 3.9.3)
74
+ rspec-expectations (3.9.2)
75
75
  diff-lcs (>= 1.2.0, < 2.0)
76
76
  rspec-support (~> 3.9.0)
77
77
  rspec-mocks (3.9.1)
78
78
  diff-lcs (>= 1.2.0, < 2.0)
79
79
  rspec-support (~> 3.9.0)
80
- rspec-support (3.9.2)
80
+ rspec-support (3.9.3)
81
81
  ruby-readability (0.7.0)
82
82
  guess_html_encoding (>= 0.0.4)
83
83
  nokogiri (>= 1.6.0)
84
+ rubyzip (2.3.0)
84
85
  safe_yaml (1.0.5)
85
- sanitize (5.1.0)
86
+ sanitize (5.2.0)
86
87
  crass (~> 1.0.2)
87
88
  nokogiri (>= 1.8.0)
88
89
  nokogumbo (~> 2.0)
90
+ selenium-webdriver (3.142.7)
91
+ childprocess (>= 0.5, < 4.0)
92
+ rubyzip (>= 1.2.2)
89
93
  unf (0.1.4)
90
94
  unf_ext
91
- unf_ext (0.0.7.6)
92
- webmock (3.7.6)
95
+ unf_ext (0.0.7.7)
96
+ webmock (3.8.3)
93
97
  addressable (>= 2.3.6)
94
98
  crack (>= 0.3.2)
95
99
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -99,12 +103,12 @@ PLATFORMS
99
103
  ruby
100
104
 
101
105
  DEPENDENCIES
102
- final_redirect_url!
103
- pry (>= 0.12.2)
106
+ pry (>= 0.13.1)
107
+ pry-byebug (= 3.9.0)
104
108
  rake (>= 10.0)
105
109
  rspec (>= 3.0)
106
110
  web_stat!
107
111
  webmock (>= 3.6.0)
108
112
 
109
113
  BUNDLED WITH
110
- 2.1.2
114
+ 2.1.4
data/README.md CHANGED
@@ -1,3 +1,10 @@
1
+ # !!!!! Precautions when using with Rails !!!!!
2
+
3
+ Write this line your Gemfile.
4
+ ```
5
+ gem "final_redirect_url", :git => "git@github.com:yubele/final_redirect_url"
6
+ ```
7
+
1
8
  # WebStat
2
9
 
3
10
  Fetch the web pages and stat.
@@ -18,6 +25,10 @@ Fetch the web pages and stat.
18
25
  - "rake", "~> 10.0"
19
26
  - "rspec", "~> 3.0"
20
27
 
28
+ ### Install mecab
29
+
30
+ $ sudo apt install mecab-ipadic-utf8 libmecab
31
+
21
32
  ## Installation
22
33
 
23
34
  Add this line to your application's Gemfile:
@@ -0,0 +1,18 @@
1
+ version: "3.8"
2
+ networks:
3
+ app-tier:
4
+ driver: bridge
5
+ services:
6
+ web_stat:
7
+ tty: true
8
+ stdin_open: true
9
+ container_name: web_stat
10
+ build:
11
+ context: .
12
+ dockerfile: Dockerfile
13
+ volumes:
14
+ - ./:/var/www/docker:cached
15
+ working_dir: /var/www/docker
16
+ command: bash
17
+ networks:
18
+ - app-tier
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ # Check to support tty.
3
+ if [ "$(tty>/dev/null;echo $?)" != "0" ];then
4
+ DOCKERCOMPOSE_EXEC="docker-compose exec -T"
5
+ else
6
+ DOCKERCOMPOSE_EXEC="docker-compose exec"
7
+ fi
8
+ $DOCKERCOMPOSE_EXEC web_stat /bin/bash -c ". /etc/profile.d/rvm.sh && . /root/.nvm/nvm.sh && $*"
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ if [ "$1" = "rm" ];then
4
+ shift
5
+ docker-compose rm -f
6
+ fi
7
+ docker-compose stop
8
+ if [ "$1" = "attach" ]; then
9
+ docker-compose up -d
10
+ docker attach $2
11
+ else
12
+ docker-compose up $@
13
+ fi
@@ -0,0 +1,28 @@
1
+ class WebDriverHelper
2
+ class << self
3
+ # Get last url
4
+ # @param [String] url
5
+ # @param [Integer] delay
6
+ def get_last_url(url, delay=nil)
7
+ Selenium::WebDriver.logger.output = File.join("/tmp", "selenium.log")
8
+ Selenium::WebDriver.logger.level = :info
9
+ options = Selenium::WebDriver::Chrome::Options.new(args: [
10
+ 'headless',
11
+ 'no-sandbox',
12
+ 'disable-gpu',
13
+ 'start-maximized',
14
+ 'window-size=1920,1080'
15
+ ])
16
+ driver = Selenium::WebDriver.for(:chrome, options: options)
17
+ driver.manage.timeouts.implicit_wait = 10
18
+ Selenium::WebDriver::Wait.new(timeout: 10)
19
+ driver.get(url)
20
+ if delay.is_a?(Integer)
21
+ sleep delay
22
+ end
23
+ last_url = driver.current_url
24
+ driver.quit
25
+ last_url
26
+ end
27
+ end
28
+ end
@@ -1,14 +1,18 @@
1
1
  require "bundler"
2
2
 
3
+ require 'cld'
3
4
  require 'uri'
4
5
  require 'digest'
6
+ require 'logger'
5
7
  require 'sanitize'
6
8
  require 'nokogiri'
7
9
  require 'open-uri'
10
+ require 'net/http'
8
11
  require 'ruby-readability'
9
- require 'final_redirect_url'
10
- require 'cld'
12
+ require 'selenium-webdriver'
11
13
 
14
+ require "helpers/web_drive_helper"
15
+ require "web_stat/final_redirect_url"
12
16
  require "web_stat/categorize"
13
17
  require "web_stat/configure"
14
18
  require "web_stat/errors"
@@ -1,6 +1,6 @@
1
1
  module WebStat
2
2
  class Fetch
3
- attr_accessor :url, :html, :nokogiri, :userdic
3
+ attr_accessor :url, :html, :nokogiri, :userdic, :status
4
4
 
5
5
  # Get title
6
6
  # @return [String] title
@@ -13,9 +13,12 @@ module WebStat
13
13
  rescue
14
14
  title = @nokogiri.title
15
15
  end
16
- title.strip
16
+ if title.nil?
17
+ "No Title"
18
+ else
19
+ title.strip
20
+ end
17
21
  end
18
-
19
22
  # Get name of domain
20
23
  def site_name
21
24
  begin
@@ -23,9 +26,12 @@ module WebStat
23
26
  rescue
24
27
  site_name = @nokogiri.title
25
28
  end
26
- site_name.strip
29
+ if site_name.nil?
30
+ "No Sitename"
31
+ else
32
+ site_name.strip
33
+ end
27
34
  end
28
- []
29
35
  # Get main section
30
36
  def content
31
37
  Sanitize.clean(Readability::Document.new(@nokogiri.at('body')).content)
@@ -41,7 +47,7 @@ module WebStat
41
47
  break
42
48
  end
43
49
  end
44
- if path.match(/^\//)
50
+ if ! path.nil? && path.match(/^\//)
45
51
  "#{URI.parse(@url).scheme}://#{URI.parse(@url).host}#{path}"
46
52
  else
47
53
  path
@@ -67,26 +73,34 @@ module WebStat
67
73
 
68
74
  # Get url
69
75
  # @param [String] url
76
+ # @param [String] body
70
77
  def get_url(url)
71
78
  agent = Mechanize.new { |_agent| _agent.user_agent = WebStat::Configure.get["user_agent"] }
72
79
  # Enable to read Robots.txt
73
80
  agent.robots = true
74
- document = agent.get(url, [], nil, { 'Accept-Language' => 'ja'})
75
- if document.class == Mechanize::File
76
- document.body
77
- else
78
- document.body.encode('UTF-8', document.encoding)
81
+ begin
82
+ document = agent.get(url, [], nil, { 'Accept-Language' => 'ja'})
83
+ if document.class == Mechanize::File
84
+ body = document.body
85
+ else
86
+ body = document.body.encode('UTF-8', document.encoding)
87
+ end
88
+ @status = document.code
89
+ rescue Mechanize::ResponseCodeError => e
90
+ body = e.page.body
91
+ @status = e.page.code
79
92
  end
93
+ body
80
94
  end
81
95
 
82
96
  # Get the informations of @url
83
97
  # @param [Hash] Specify a dictionary for each language code. example ) {"ja": /***/**.dic, "other": /***/***.dic}
84
98
  def stat(userdics: nil)
85
- clean_content = content.scrub('').gsub(/[\s ]/, "")
99
+ clean_content = content.scrub('').gsub(/[\n\t\r ]/, "").gsub(/\s{2,}/, "\s")
86
100
  language_code = CLD.detect_language(clean_content)[:code]
87
- if userdics && userdics.has_key?(language_code)
101
+ if userdics && userdics.has_key?(language_code) && File.exists?(userdics[language_code])
88
102
  tag = WebStat::Tag.new("#{title} #{content}", userdic: userdics[language_code])
89
- elsif userdics && userdics.has_key?("other")
103
+ elsif userdics && userdics.has_key?("other") && File.exists?(userdics["other"])
90
104
  tag = WebStat::Tag.new("#{title} #{content}", userdic: userdics["other"])
91
105
  else
92
106
  tag = WebStat::Tag.new("#{title} #{content}", userdic: WebStat::Configure.get["userdic"])
@@ -96,6 +110,7 @@ module WebStat
96
110
  site_name: site_name,
97
111
  content: clean_content,
98
112
  language_code: language_code,
113
+ status: @status,
99
114
  url: @url,
100
115
  eyecatch_image_path: save_local_path(eyecatch_image_path),
101
116
  tags: tag.nouns
@@ -107,8 +122,9 @@ module WebStat
107
122
  # Get original url
108
123
  # @param [String] url
109
124
  def original_url(url)
110
- if url.match(/^http/)
111
- FinalRedirectUrl.final_redirect_url(url)
125
+ last_url = FinalRedirectUrl.final_redirect_url(url)
126
+ unless last_url.nil? || last_url.scrub('').empty?
127
+ last_url
112
128
  else
113
129
  url
114
130
  end
@@ -0,0 +1,50 @@
1
+ # ref) https://github.com/indyarocks/final_redirect_url
2
+ # customize
3
+ # Changed
4
+
5
+ module FinalRedirectUrl
6
+
7
+ def self.final_redirect_url(url, options={})
8
+ final_url = ''
9
+ if is_valid_url?(url)
10
+ begin
11
+ redirect_lookup_depth = options[:depth].to_i > 0 ? options[:depth].to_i : 10
12
+ response_uri = get_final_redirect_url(url, redirect_lookup_depth)
13
+ final_url = url_string_from_uri(response_uri)
14
+ rescue Exception => ex
15
+ # nothing
16
+ end
17
+ end
18
+ final_url
19
+ end
20
+
21
+ private
22
+ def self.is_valid_url?(url)
23
+ url.to_s.match? URI::regexp(['http', 'https'])
24
+ end
25
+
26
+ def self.get_final_redirect_url(url, limit = 10)
27
+ return url if limit <= 0
28
+ uri = URI.parse(url)
29
+ response = ::Net::HTTP.get_response(uri)
30
+ if response.class == Net::HTTPOK
31
+ return URI.parse(WebDriverHelper.get_last_url(uri))
32
+ else
33
+ redirect_location = response['location']
34
+ location_uri = URI.parse(redirect_location)
35
+ if location_uri.host.nil?
36
+ redirect_location = uri.scheme + '://' + uri.host + redirect_location
37
+ end
38
+ warn "redirected to #{redirect_location}"
39
+ get_final_redirect_url(redirect_location, limit - 1)
40
+ end
41
+ end
42
+
43
+ def self.url_string_from_uri(uri)
44
+ url_str = "#{uri.scheme}://#{uri.host}#{uri.request_uri}"
45
+ if uri.fragment
46
+ url_str = url_str + "##{uri.fragment}"
47
+ end
48
+ url_str
49
+ end
50
+ end
@@ -4,7 +4,7 @@ module WebStat
4
4
  attr_accessor :natto_mecab, :article
5
5
 
6
6
  def initialize(article, userdic: nil)
7
- @natto_mecab = Natto::MeCab.new(userdic: userdic)
7
+ @natto_mecab = Natto::MeCab.new(userdic: userdic)
8
8
  @article = article
9
9
  end
10
10
 
@@ -1,3 +1,3 @@
1
1
  module WebStat
2
- VERSION = "0.2.7"
3
- end
2
+ VERSION = "0.3.0"
3
+ end
@@ -1,12 +1,18 @@
1
1
  require 'rspec/expectations'
2
2
  require "bundler/setup"
3
3
  require 'pry'
4
+ require 'pry-byebug'
4
5
  require "web_stat"
5
6
 
6
7
  require 'webmock'
7
8
  include WebMock::API
8
9
  WebMock.enable!
9
10
 
11
+ WebMock.disable_net_connect!({
12
+ allow_localhost: true,
13
+ allow: 'chromedriver.storage.googleapis.com'
14
+ })
15
+
10
16
  RSpec.configure do |config|
11
17
  # Enable flags like --only-failures and --next-failure
12
18
  config.example_status_persistence_file_path = ".rspec_status"
@@ -59,9 +65,10 @@ end
59
65
 
60
66
  # Set webmock
61
67
  WebStatTestHelper.scheme_and_files.each do |url|
68
+ status = [200, 404, 503].sample
62
69
  WebMock.stub_request(:get, url)
63
70
  .to_return(
64
- status: 200,
71
+ status: status,
65
72
  body: File.new(File.join(File.dirname(__FILE__), "fixtures", "htmls", File.basename(url))),
66
73
  headers: {content_type: 'application/html; charset=utf-8'})
67
74
  end
@@ -83,6 +83,7 @@ RSpec.describe WebStat::Fetch do
83
83
  expect(web_stat[:title]).to eq "gem作成でついまずいたところ"
84
84
  expect(web_stat[:site_name]).to eq "newsdict.blog"
85
85
  expect(web_stat[:content]).not_to eq nil
86
+ expect(web_stat[:status]).to eq("200").or eq("404").or eq("503")
86
87
  expect(Sanitize.clean(web_stat[:content]).length).to eq web_stat[:content].length
87
88
  expect(web_stat[:eyecatch_image_path]).to be_tmp_file_or_nil
88
89
  end
@@ -27,9 +27,11 @@ Gem::Specification.new do |spec|
27
27
  spec.add_runtime_dependency "natto", ">= 1.1.2"
28
28
  spec.add_runtime_dependency "sanitize", ">= 5.0.0"
29
29
  spec.add_runtime_dependency "cld", ">= 0.8.0"
30
+ spec.add_runtime_dependency "selenium-webdriver", "= 3.142.7"
30
31
 
31
32
  spec.add_development_dependency "rake", ">= 10.0"
32
33
  spec.add_development_dependency "rspec", ">= 3.0"
33
- spec.add_development_dependency "pry", ">= 0.12.2"
34
+ spec.add_development_dependency "pry", ">= 0.13.1"
34
35
  spec.add_development_dependency "webmock", ">= 3.6.0"
36
+ spec.add_development_dependency "pry-byebug", "3.9.0"
35
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web_stat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yusuke abe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-05 00:00:00.000000000 Z
11
+ date: 2020-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.8.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: selenium-webdriver
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 3.142.7
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 3.142.7
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +156,14 @@ dependencies:
142
156
  requirements:
143
157
  - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: 0.12.2
159
+ version: 0.13.1
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: 0.12.2
166
+ version: 0.13.1
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: webmock
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +178,20 @@ dependencies:
164
178
  - - ">="
165
179
  - !ruby/object:Gem::Version
166
180
  version: 3.6.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: pry-byebug
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '='
186
+ - !ruby/object:Gem::Version
187
+ version: 3.9.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 3.9.0
167
195
  description: Fetch the web pages and stat.
168
196
  email:
169
197
  - yube@newsdict.jp
@@ -177,12 +205,17 @@ files:
177
205
  - ".ruby-version"
178
206
  - ".travis.yml"
179
207
  - CODE_OF_CONDUCT.md
208
+ - Dockerfile
180
209
  - Gemfile
181
210
  - Gemfile.lock
182
211
  - LICENSE.txt
183
212
  - README.md
184
213
  - Rakefile
185
214
  - bin/fetch_as_html
215
+ - docker-compose.yml
216
+ - docker/exec
217
+ - docker/start
218
+ - lib/helpers/web_drive_helper.rb
186
219
  - lib/web_stat.rb
187
220
  - lib/web_stat/categorize.rb
188
221
  - lib/web_stat/config/web_stat.yml
@@ -191,6 +224,7 @@ files:
191
224
  - lib/web_stat/fetch.rb
192
225
  - lib/web_stat/fetch/fetch_as_html.rb
193
226
  - lib/web_stat/fetch/fetch_as_web.rb
227
+ - lib/web_stat/final_redirect_url.rb
194
228
  - lib/web_stat/tag.rb
195
229
  - lib/web_stat/tasks/install.rake
196
230
  - lib/web_stat/version.rb