rack-env_ribbon 0.1.1 → 0.1.2

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
  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