rack-capture 0.1.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca614d90af90f94f06ccb59fc0a2a5ad476e70170bbc06bda2dbce601f9037c1
4
- data.tar.gz: 79ed210bc2976e4e38952dd237e174c4a4057a03105903ad8fc245c09a70dd80
3
+ metadata.gz: 2f79f70c288700c5f342644d33ea160284c03f736bcf7087ed283040b9c2e7ba
4
+ data.tar.gz: 491769ee97aa6a55ded4ddb4db0b6c57625806bf4f4f7af9b3773e6e8e738894
5
5
  SHA512:
6
- metadata.gz: 6cd08848f826f9f44c5144edcf21571166a7cf579565eabf1963309925690f7bf95d15b5192d8baf5957297103ec652c450bf3d4ebea0ab46c7ad78b7ed223bb
7
- data.tar.gz: 90de2cc42390fa8783b8dcdabd19f00a561446c6518c012b6cfe9a35cfbdd5a8d2575cdf5afd32ee04623bee758a59814fd6f1980d5243b8a69e438fb9844422
6
+ metadata.gz: 77ed9519baed02126f4bf1075c482ae3915e24042844eb6b7c4157aa809cef3021887c0fa5873c29f1b5b2728cd6a450aa4a0a460ec45ef840b52177eb28a2c8
7
+ data.tar.gz: 506a67af2aeeebb56e2a8e0abb079b4a8dae933988eb422cc6b3af6347ca3c43aa98d4d86290222a2785bbe148db660844b9581f6932b691ea91e3f786489fd5
@@ -0,0 +1,18 @@
1
+ name: test
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-18.04
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: actions/setup-ruby@v1
14
+ with:
15
+ ruby-version: '2.7.2'
16
+ - run: bundle install --jobs=$(($(nproc) - 1)) --retry=3
17
+ - run: bundle exec rubocop --color --parallel
18
+ - run: bundle exec rspec --force-color
@@ -0,0 +1,12 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ TargetRubyVersion: '2.5'
4
+
5
+ Metrics:
6
+ Enabled: false
7
+
8
+ Naming/AccessorMethodName:
9
+ Enabled: false
10
+
11
+ Style/Documentation:
12
+ Enabled: false
@@ -0,0 +1,60 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## Unreleased
9
+
10
+ ## 0.4.0 - 2020-11-06
11
+
12
+ ### Added
13
+
14
+ - Add `:output_directory_path` option.
15
+
16
+ ### Changed
17
+
18
+ - Change default output path from `"dist"` to `"output"`.
19
+
20
+ ### Fixed
21
+
22
+ - Fix output file name on GET /script_name/.
23
+
24
+ ## 0.3.0 - 2020-11-06
25
+
26
+ ### Added
27
+
28
+ - Add `:script_name` option.
29
+
30
+ ### Changed
31
+
32
+ - Change least require ruby version from 2.4.0 to 2.5.0.
33
+
34
+ ### Fixed
35
+
36
+ - Fix frozen bug when a frozen body is passsed.
37
+
38
+ ## 0.2.0 - 2020-11-06
39
+
40
+ ### Changed
41
+
42
+ - Change least require ruby version from 2.3.0 to 2.4.0.
43
+
44
+ ## 0.1.2 - 2020-10-28
45
+
46
+ ### Fixed
47
+
48
+ - Fix wrong module name.
49
+
50
+ ## 0.1.1 - 2020-10-28
51
+
52
+ ### Added
53
+
54
+ - Add Rack::Capture.call.
55
+
56
+ ## 0.1.0 - 2020-10-28
57
+
58
+ ### Added
59
+
60
+ - Add Rack::Capture.
data/Gemfile CHANGED
@@ -1,7 +1,11 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in rack-capture.gemspec
4
6
  gemspec
5
7
 
6
- gem "rake", "~> 12.0"
7
- gem "rspec", "~> 3.0"
8
+ gem 'fakefs'
9
+ gem 'rake', '~> 12.0'
10
+ gem 'rspec', '~> 3.0'
11
+ gem 'rubocop'
@@ -1,15 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-capture (0.1.0)
4
+ rack-capture (0.4.0)
5
5
  rack
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
+ ast (2.4.1)
10
11
  diff-lcs (1.4.4)
12
+ fakefs (1.2.2)
13
+ parallel (1.19.2)
14
+ parser (2.7.2.0)
15
+ ast (~> 2.4.1)
11
16
  rack (2.2.3)
17
+ rainbow (3.0.0)
12
18
  rake (12.3.3)
19
+ regexp_parser (1.8.2)
20
+ rexml (3.2.4)
13
21
  rspec (3.9.0)
14
22
  rspec-core (~> 3.9.0)
15
23
  rspec-expectations (~> 3.9.0)
@@ -23,14 +31,29 @@ GEM
23
31
  diff-lcs (>= 1.2.0, < 2.0)
24
32
  rspec-support (~> 3.9.0)
25
33
  rspec-support (3.9.4)
34
+ rubocop (1.2.0)
35
+ parallel (~> 1.10)
36
+ parser (>= 2.7.1.5)
37
+ rainbow (>= 2.2.2, < 4.0)
38
+ regexp_parser (>= 1.8)
39
+ rexml
40
+ rubocop-ast (>= 1.0.1)
41
+ ruby-progressbar (~> 1.7)
42
+ unicode-display_width (>= 1.4.0, < 2.0)
43
+ rubocop-ast (1.1.1)
44
+ parser (>= 2.7.1.5)
45
+ ruby-progressbar (1.10.1)
46
+ unicode-display_width (1.7.0)
26
47
 
27
48
  PLATFORMS
28
49
  ruby
29
50
 
30
51
  DEPENDENCIES
52
+ fakefs
31
53
  rack-capture!
32
54
  rake (~> 12.0)
33
55
  rspec (~> 3.0)
56
+ rubocop
34
57
 
35
58
  BUNDLED WITH
36
59
  2.1.4
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Rack::Capture
2
2
 
3
+ [![](https://badge.fury.io/rb/rack-capture.svg)](https://rubygems.org/gems/rack-capture)
4
+ [![test](https://github.com/r7kamura/rack-capture/workflows/test/badge.svg)](https://github.com/r7kamura/rack-capture/actions?query=workflow%3Atest)
5
+
3
6
  Generate static files from Rack application and URLs.
4
7
 
5
8
  ## Installation
@@ -23,6 +26,8 @@ Or install it yourself as:
23
26
  Call `Rack::Capture.call` to generate static file.
24
27
 
25
28
  ```ruby
29
+ require 'rack/capture'
30
+
26
31
  %w[
27
32
  http://example.com/
28
33
  http://example.com/articles
@@ -36,8 +41,16 @@ Call `Rack::Capture.call` to generate static file.
36
41
  app: my_rack_application,
37
42
  url: url
38
43
  )
44
+ end
39
45
  ```
40
46
 
47
+ ### Arguments
48
+
49
+ - `:app` - Rack application to be used for rendering response
50
+ - `:url` - URL
51
+ - `:output_directory_path` - Where to output files (default: `"output"`)
52
+ - `:script_name` - Rack SCRIPT_NAME, commonly used for GitHub Pages project sites (default: `""`)
53
+
41
54
  ## Development
42
55
 
43
56
  ### Setup
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "rack/capture"
4
+ require 'bundler/setup'
5
+ require 'rack/capture'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "rack/capture"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start(__FILE__)
@@ -1,27 +1,30 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
  require 'rack'
3
5
  require 'rack/capture/version'
4
6
 
5
- module R7k
7
+ module Rack
6
8
  class Capture
7
9
  class << self
8
- # @param [#call] app Rack application.
9
- # @param [String] url
10
- def call(
11
- app:,
12
- url:
13
- )
14
- new(app: app, url: url).call
10
+ def call(**args)
11
+ new(**args).call
15
12
  end
16
13
  end
17
14
 
18
15
  # @param [#call] app Rack application.
16
+ # @param [String] output_directory_path
17
+ # @param [String] script_name
19
18
  # @param [String] url
20
19
  def initialize(
21
20
  app:,
22
- url:
21
+ url:,
22
+ output_directory_path: 'output',
23
+ script_name: ''
23
24
  )
24
25
  @app = app
26
+ @output_directory_path = output_directory_path
27
+ @script_name = script_name
25
28
  @url = url
26
29
  end
27
30
 
@@ -31,7 +34,7 @@ module R7k
31
34
  destination.parent.mkpath
32
35
  content = ''
33
36
  response.body.each do |element|
34
- content << element
37
+ content += element
35
38
  end
36
39
  destination.write(content)
37
40
  end
@@ -40,11 +43,9 @@ module R7k
40
43
 
41
44
  # @param [Rack::Response] response
42
45
  def calculate_destination(response:)
43
- destination = ::Pathname.new("dist#{uri.path}")
46
+ destination = ::Pathname.new("#{@output_directory_path}#{path_info}")
44
47
  if response.content_type&.include?('text/html')
45
- if uri.path == '/'
46
- destination += 'index'
47
- end
48
+ destination += 'index' if path_info == '/'
48
49
  destination = destination.sub_ext('.html')
49
50
  end
50
51
  destination
@@ -56,16 +57,21 @@ module R7k
56
57
  ::Rack::Response.new(body, status, headers)
57
58
  end
58
59
 
60
+ # @return [String]
61
+ def path_info
62
+ uri.path.delete_prefix(@script_name)
63
+ end
64
+
59
65
  # @return [Hash]
60
66
  def rack_env
61
67
  {
62
68
  'HTTP_HOST' => @host,
63
- 'PATH_INFO' => uri.path,
69
+ 'PATH_INFO' => path_info,
64
70
  'QUERY_STRING' => uri.query || '',
65
71
  'rack.url_scheme' => rack_url_scheme,
66
72
  'REQUEST_METHOD' => 'GET',
67
- 'SCRIPT_NAME' => '',
68
- 'SERVER_NAME' => uri.host,
73
+ 'SCRIPT_NAME' => @script_name,
74
+ 'SERVER_NAME' => uri.host
69
75
  }
70
76
  end
71
77
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rack
2
4
  class Capture
3
- VERSION = "0.1.0"
5
+ VERSION = '0.4.0'
4
6
  end
5
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/rack/capture/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -9,12 +11,13 @@ Gem::Specification.new do |spec|
9
11
  spec.summary = 'Generate static files from Rack application and URLs.'
10
12
  spec.homepage = 'https://github.com/r7kamura/rack-capture'
11
13
  spec.license = 'MIT'
12
- spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
14
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
13
15
 
14
16
  spec.metadata['homepage_uri'] = spec.homepage
15
17
  spec.metadata['source_code_uri'] = spec.homepage
18
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/master/CHANGELOG.md"
16
19
 
17
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
22
  end
20
23
  spec.require_paths = ['lib']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-capture
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2020-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -31,9 +31,11 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
+ - ".github/workflows/test.yml"
34
35
  - ".gitignore"
35
36
  - ".rspec"
36
- - ".travis.yml"
37
+ - ".rubocop.yml"
38
+ - CHANGELOG.md
37
39
  - Gemfile
38
40
  - Gemfile.lock
39
41
  - LICENSE.txt
@@ -50,6 +52,7 @@ licenses:
50
52
  metadata:
51
53
  homepage_uri: https://github.com/r7kamura/rack-capture
52
54
  source_code_uri: https://github.com/r7kamura/rack-capture
55
+ changelog_uri: https://github.com/r7kamura/rack-capture/blob/master/CHANGELOG.md
53
56
  post_install_message:
54
57
  rdoc_options: []
55
58
  require_paths:
@@ -58,7 +61,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
61
  requirements:
59
62
  - - ">="
60
63
  - !ruby/object:Gem::Version
61
- version: 2.3.0
64
+ version: 2.5.0
62
65
  required_rubygems_version: !ruby/object:Gem::Requirement
63
66
  requirements:
64
67
  - - ">="
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.7.1
6
- before_install: gem install bundler -v 2.1.4