rack-env_ribbon 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: f4da5b45b330b80e32d8a63bd3d1668f786f58d6
4
- data.tar.gz: d45d7704daae6e62682277eb3142376bef10614f
3
+ metadata.gz: 324d7c6c79dc4c94779f88ee445b0e80d4a2dab9
4
+ data.tar.gz: 6b4f3b38fb4a8153fed7d530c417d881acf68edc
5
5
  SHA512:
6
- metadata.gz: 38036ca953bfaf270d79123763ba7fc6ad73c84625652150c7d6516f3fca5501b2611e849ac0111c3d336ed3b8a0b260a40f35fd086db94e5eddf55fa394fc1f
7
- data.tar.gz: 6cf1612fd7af39da04f26437333c0af97924025832825fceb5344e5f2e131e73685d230a01aa1d7851894b7e99f6440d0bf740952f67362f98f86ecd2836cef6
6
+ metadata.gz: c63b24c7effb2b294e3aec5fb51b9eb4374e8d46093389968588264672754fdac2fc921019d7efa9bdbae7f301106a31e26a4a91ffa573cd5232d66099c893a3
7
+ data.tar.gz: 4e71b95aeb8dbc38a040605150cc46f89a2a00a745c8aacb0c913bbf71725e13259b464911a70c0197bf51c64ef7bcdd274c3b706e0c793dabc594dd88c434a6
data/README.md CHANGED
@@ -24,7 +24,7 @@ run app
24
24
 
25
25
  ### Sinatra
26
26
 
27
- Add `use Rack::EnvRibbon` in the same way as rack application.
27
+ Add `use Rack::EnvRibbon` in the same way as rack application
28
28
 
29
29
  ```rb
30
30
  require 'sinatra'
@@ -35,29 +35,30 @@ use Rack::EnvRibbon
35
35
 
36
36
  get '/' do
37
37
  <<-HTML
38
- <!DOCTYPE html>
39
- <html lang="ja">
40
- <head>
41
- <meta charset="utf-8">
42
- <title>sinatra app</title>
43
- </head>
44
- <body>
45
- <p>body</p>
46
- </body>
47
- </html>
38
+ <!DOCTYPE html>
39
+ <html lang="ja">
40
+ <head>
41
+ <meta charset="utf-8">
42
+ <title>sinatra app</title>
43
+ </head>
44
+ <body>
45
+ <p>app body</p>
46
+ </body>
47
+ </html>
48
48
  HTML
49
49
  end
50
50
  ```
51
51
 
52
52
  ### Rails
53
53
 
54
- Add this line to your application's Gemfile:
54
+ Add this line to your application's Gemfile
55
55
 
56
56
  ```ruby
57
- gem 'rack-env_ribbon', require: 'rack/env_ribbon/railtie'
57
+ gem 'rack-env_ribbon'
58
58
  ```
59
59
 
60
- And then execute:
60
+ And then execute
61
+
61
62
  ```bash
62
63
  $ bundle
63
64
  ```
@@ -1,32 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rack/utils'
1
4
  require 'rack/env_ribbon/html_converter'
2
5
 
3
6
  module Rack
4
7
  class EnvRibbon
8
+ include Rack::Utils
9
+
5
10
  def initialize(app, opts = {})
6
11
  @app = app
7
12
  end
8
13
 
9
14
  def call(env)
10
15
  status, headers, body = @app.call(env)
16
+ headers = HeaderHash.new(headers)
11
17
 
12
- if headers[CONTENT_TYPE] =~ /\btext\/html\b/
18
+ if applicable?(status, headers)
13
19
  new_body = []
20
+ new_content_length = 0
14
21
 
15
- # The response body must respond to each.
22
+ # The response body must respond to `each` method.
16
23
  body.each do |html|
17
24
  converter = HtmlConverter.new(html, app_env)
18
- next unless converter.valid?
25
+ next unless converter.valid_html?
26
+
19
27
  converter.insert_env_ribbon_into_body
20
28
  converter.insert_env_string_into_title
21
29
  converter.insert_env_ribbon_style_into_head
22
- new_body << converter.result
30
+ result = converter.result
31
+
32
+ new_body << result
33
+ new_content_length += result.bytesize
23
34
  end
24
35
 
25
36
  new_body.compact!
26
37
 
27
38
  unless new_body.empty?
28
39
  body = new_body
29
- headers[CONTENT_LENGTH] &&= body.map(&:bytesize).inject(&:+).to_s
40
+ headers[CONTENT_LENGTH] &&= new_content_length
30
41
  end
31
42
  end
32
43
 
@@ -38,5 +49,12 @@ module Rack
38
49
  def app_env
39
50
  @app_env ||= ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
40
51
  end
52
+
53
+ def applicable?(status, headers)
54
+ !STATUS_WITH_NO_ENTITY_BODY.include?(status) &&
55
+ headers[CONTENT_TYPE] =~ /\btext\/html\b/
56
+ end
41
57
  end
42
58
  end
59
+
60
+ require 'rack/env_ribbon/railtie' if defined?(Rails::Railtie)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rack
2
4
  class EnvRibbon
3
5
  class HtmlConverter
@@ -8,8 +10,8 @@ module Rack
8
10
  @env = env.to_s
9
11
  end
10
12
 
11
- def valid?
12
- @valid ||= has_tag?('html') && has_tag?('body')
13
+ def valid_html?
14
+ has_tag?('html') && has_tag?('body')
13
15
  end
14
16
 
15
17
  def insert_env_string_into_title
@@ -1,5 +1,4 @@
1
- require 'rails'
2
- require 'rack/env_ribbon'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Rack
5
4
  class EnvRibbon
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rack
2
4
  class EnvRibbon
3
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-env_ribbon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shota Iguchi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-02 00:00:00.000000000 Z
11
+ date: 2016-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -38,6 +38,48 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
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: capybara
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
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: poltergeist
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'
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: pry
43
85
  requirement: !ruby/object:Gem::Requirement