web_pipe 0.8.0 → 0.9.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +4 -2
  4. data/README.md +60 -310
  5. data/Rakefile +5 -3
  6. data/bin/console +4 -3
  7. data/docs/_config.yml +1 -0
  8. data/docs/building_a_rack_application.md +25 -0
  9. data/docs/composing_applications.md +43 -0
  10. data/docs/connection_struct/configuring_the_connection_struct.md +25 -0
  11. data/docs/connection_struct/halting_the_pipe.md +71 -0
  12. data/docs/connection_struct/sharing_data_downstream.md +46 -0
  13. data/docs/connection_struct.md +77 -0
  14. data/docs/design_model.md +44 -0
  15. data/docs/dsl_free_usage.md +26 -0
  16. data/docs/extensions/container.md +41 -0
  17. data/docs/extensions/cookies.md +47 -0
  18. data/docs/extensions/dry_schema.md +51 -0
  19. data/docs/extensions/dry_view.md +113 -0
  20. data/docs/extensions/flash.md +41 -0
  21. data/docs/extensions/params.md +117 -0
  22. data/docs/extensions/redirect.md +25 -0
  23. data/docs/extensions/router_params.md +40 -0
  24. data/docs/extensions/session.md +39 -0
  25. data/docs/extensions/url.md +11 -0
  26. data/docs/extensions.md +13 -0
  27. data/docs/introduction.md +73 -0
  28. data/docs/plugging_operations/composing_operations.md +36 -0
  29. data/docs/plugging_operations/injecting_operations.md +32 -0
  30. data/docs/plugging_operations/resolving_operations.md +71 -0
  31. data/docs/plugging_operations.md +21 -0
  32. data/docs/plugs/config.md +18 -0
  33. data/docs/plugs/content_type.md +16 -0
  34. data/docs/plugs.md +13 -0
  35. data/docs/recipes/dry_rb_integration.md +18 -0
  36. data/docs/recipes/hanami_router_integration.md +25 -0
  37. data/docs/recipes/using_all_restful_methods.md +25 -0
  38. data/docs/using_rack_middlewares/composing_middlewares.md +26 -0
  39. data/docs/using_rack_middlewares/injecting_middlewares.md +47 -0
  40. data/docs/using_rack_middlewares.md +22 -0
  41. data/lib/web_pipe/app.rb +4 -2
  42. data/lib/web_pipe/conn.rb +5 -3
  43. data/lib/web_pipe/conn_support/builder.rb +2 -0
  44. data/lib/web_pipe/conn_support/composition.rb +9 -7
  45. data/lib/web_pipe/conn_support/errors.rb +3 -1
  46. data/lib/web_pipe/conn_support/headers.rb +12 -10
  47. data/lib/web_pipe/conn_support/types.rb +11 -9
  48. data/lib/web_pipe/dsl/builder.rb +5 -3
  49. data/lib/web_pipe/dsl/class_context.rb +5 -3
  50. data/lib/web_pipe/dsl/dsl_context.rb +7 -5
  51. data/lib/web_pipe/dsl/instance_methods.rb +7 -5
  52. data/lib/web_pipe/extensions/container/container.rb +2 -0
  53. data/lib/web_pipe/extensions/cookies/cookies.rb +4 -3
  54. data/lib/web_pipe/extensions/dry_schema/dry_schema.rb +2 -0
  55. data/lib/web_pipe/extensions/dry_schema/plugs/sanitize_params.rb +4 -2
  56. data/lib/web_pipe/extensions/dry_view/dry_view.rb +13 -9
  57. data/lib/web_pipe/extensions/flash/flash.rb +7 -7
  58. data/lib/web_pipe/extensions/params/params/transf.rb +3 -1
  59. data/lib/web_pipe/extensions/params/params.rb +7 -5
  60. data/lib/web_pipe/extensions/redirect/redirect.rb +8 -6
  61. data/lib/web_pipe/extensions/router_params/router_params.rb +4 -2
  62. data/lib/web_pipe/extensions/session/session.rb +6 -4
  63. data/lib/web_pipe/extensions/url/url.rb +3 -1
  64. data/lib/web_pipe/plug.rb +7 -5
  65. data/lib/web_pipe/plugs.rb +7 -1
  66. data/lib/web_pipe/rack_support/app_with_middlewares.rb +3 -1
  67. data/lib/web_pipe/rack_support/middleware.rb +2 -0
  68. data/lib/web_pipe/rack_support/middleware_specification.rb +5 -3
  69. data/lib/web_pipe/types.rb +3 -1
  70. data/lib/web_pipe/version.rb +3 -1
  71. data/lib/web_pipe.rb +5 -3
  72. data/web_pipe.gemspec +34 -34
  73. metadata +82 -48
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'web_pipe/dsl/dsl_context'
3
5
 
@@ -32,7 +34,7 @@ module WebPipe
32
34
  define_container
33
35
  define_dsl
34
36
  end
35
-
37
+
36
38
  private
37
39
 
38
40
  def define_container
@@ -47,11 +49,11 @@ module WebPipe
47
49
  DSL_METHODS.each do |method|
48
50
  module_exec(dsl_context) do |dsl_context|
49
51
  define_method(method) do |*args, &block|
50
- dsl_context.method(method).(*args, &block)
52
+ dsl_context.method(method).call(*args, &block)
51
53
  end
52
54
  end
53
55
  end
54
56
  end
55
57
  end
56
58
  end
57
- end
59
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe'
2
4
  require 'web_pipe/types'
3
5
  require 'web_pipe/plug'
@@ -59,11 +61,11 @@ module WebPipe
59
61
  # @return [Array<Plug>]
60
62
  def plug(name, spec = nil, &block_spec)
61
63
  plug_spec = if spec.is_a?(WebPipe)
62
- spec.to_proc
63
- elsif spec
64
- spec
65
- else
66
- block_spec
64
+ spec.to_proc
65
+ elsif spec
66
+ spec
67
+ else
68
+ block_spec
67
69
  end
68
70
 
69
71
  plugs << Plug.new(name: name, spec: plug_spec)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'web_pipe/conn'
3
5
  require 'web_pipe/app'
@@ -58,7 +60,7 @@ module WebPipe
58
60
  app = App.new(operations)
59
61
  @rack_app = RackSupport::AppWithMiddlewares.new(middlewares, app)
60
62
  end
61
-
63
+
62
64
  # Expected interface for rack.
63
65
  #
64
66
  # @param env [Hash] Rack env
@@ -100,10 +102,10 @@ module WebPipe
100
102
  #
101
103
  # @see ConnSupport::Composition
102
104
  def to_proc
103
- ConnSupport::Composition.
104
- new(operations).
105
- method(:call).
106
- to_proc
105
+ ConnSupport::Composition
106
+ .new(operations)
107
+ .method(:call)
108
+ .to_proc
107
109
  end
108
110
  end
109
111
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe'
2
4
 
3
5
  module WebPipe
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe'
2
4
  require 'web_pipe/types'
3
5
  require 'rack/utils'
@@ -8,7 +10,7 @@ module WebPipe
8
10
  # This extension helps with the addition of the `Set-Cookie` header
9
11
  # to the response, which is the way the server has to instruct the
10
12
  # browser to keep a cookie. A cookie can be added with the
11
- # {#add_cookie} method, while it can be marked for deletion with
13
+ # {#set_cookie} method, while it can be marked for deletion with
12
14
  # {#delete_cookie}. Remember that marking a cookie for deletion just
13
15
  # means adding the same cookie name with an expiration time in the
14
16
  # past.
@@ -54,8 +56,7 @@ module WebPipe
54
56
  def request_cookies
55
57
  request.cookies
56
58
  end
57
-
58
-
59
+
59
60
  # @param key [String]
60
61
  # @param value [String]
61
62
  # @param opts [SET_COOKIE_OPTIONS[]]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe'
2
4
 
3
5
  WebPipe.load_extensions(:params)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'web_pipe/extensions/dry_schema/dry_schema'
3
5
 
@@ -18,11 +20,11 @@ module WebPipe
18
20
  # @return [ConnSupport::Composition::Operation[], Types::Undefined]
19
21
  def self.call(schema, handler = Types::Undefined)
20
22
  lambda do |conn|
21
- result = schema.(conn.params)
23
+ result = schema.call(conn.params)
22
24
  if result.success?
23
25
  conn.add_config(DrySchema::SANITIZED_PARAMS_KEY, result.output)
24
26
  else
25
- get_handler(conn, handler).(conn, result)
27
+ get_handler(conn, handler).call(conn, result)
26
28
  end
27
29
  end
28
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'web_pipe/conn'
3
5
  require 'dry/view'
@@ -17,7 +19,7 @@ module WebPipe
17
19
  #
18
20
  # expose :name
19
21
  # end
20
- #
22
+ #
21
23
  # class App
22
24
  # include WebPipe
23
25
  #
@@ -39,7 +41,7 @@ module WebPipe
39
41
  #
40
42
  # Container = { 'views.say_hello' => SayHelloView.new }.freeze
41
43
  #
42
- # plug :config_container, ->(conn) { conn.add_config(:container, Container[Container]) }
44
+ # plug :config_container, ->(conn) { conn.add_config(:container, Container) }
43
45
  # plug :render
44
46
  #
45
47
  # def render(conn)
@@ -75,6 +77,8 @@ module WebPipe
75
77
  # expose :name
76
78
  # end
77
79
  #
80
+ # WebPipe.load_extensions(:url)
81
+ #
78
82
  # class App
79
83
  # include WebPipe
80
84
  #
@@ -118,7 +122,7 @@ module WebPipe
118
122
  def view(view_spec, **kwargs)
119
123
  view_instance = view_instance(view_spec)
120
124
  view_input = view_input(kwargs, view_instance)
121
-
125
+
122
126
  set_response_body(
123
127
  view_instance.call(
124
128
  view_input
@@ -137,12 +141,12 @@ module WebPipe
137
141
  def view_input(kwargs, view_instance)
138
142
  return kwargs if kwargs.key?(:context)
139
143
 
140
- context = view_instance.
141
- config.
142
- default_context.
143
- with(
144
- fetch_config(VIEW_CONTEXT_KEY, DEFAULT_VIEW_CONTEXT).(self)
145
- )
144
+ context = view_instance
145
+ .config
146
+ .default_context
147
+ .with(
148
+ fetch_config(VIEW_CONTEXT_KEY, DEFAULT_VIEW_CONTEXT).call(self)
149
+ )
146
150
  kwargs.merge(context: context)
147
151
  end
148
152
  end
@@ -4,7 +4,7 @@ require 'web_pipe/conn'
4
4
  require 'web_pipe/conn_support/errors'
5
5
 
6
6
  module WebPipe
7
- # Provides with a tipical flash messages functionality.
7
+ # Provides with a typical flash messages functionality.
8
8
  #
9
9
  # @example
10
10
  # require 'web_pipe'
@@ -12,15 +12,15 @@ module WebPipe
12
12
  # require 'rack-flash'
13
13
  #
14
14
  # WebPipe.load_extensions(:flash)
15
- #
15
+ #
16
16
  # class MyApp
17
17
  # include WebPipe
18
18
  #
19
19
  # use :session, Rack::Session::Cookie, secret: 'secret'
20
20
  # use :flash, Rack::Flash
21
21
  #
22
- # plug :add_in_flash, ->(conn) { conn.add_flash(:notice, 'Hello world') }
23
- # plug :add_in_flash_now, ->(conn) { conn.add_flash_now(:notice_now, 'Hello world now') }
22
+ # plug :add_to_flash, ->(conn) { conn.add_flash(:notice, 'Hello world') }
23
+ # plug :add_to_flash_now, ->(conn) { conn.add_flash_now(:notice_now, 'Hello world now') }
24
24
  # end
25
25
  #
26
26
  # Usually, you will end up making `conn.flash` available to your view system:
@@ -37,7 +37,7 @@ module WebPipe
37
37
  # @see https://github.com/nakajima/rack-flash
38
38
  module Flash
39
39
  RACK_FLASH_KEY = 'x-rack.flash'
40
-
40
+
41
41
  # Returns the flash bag.
42
42
  #
43
43
  # @return [Rack::Flash::FlashHash]
@@ -47,8 +47,8 @@ module WebPipe
47
47
  def flash
48
48
  env.fetch(RACK_FLASH_KEY) do
49
49
  raise ConnSupport::MissingMiddlewareError.new(
50
- 'flash', 'Rack::Flash', 'https://rubygems.org/gems/rack-flash3'
51
- )
50
+ 'flash', 'Rack::Flash', 'https://rubygems.org/gems/rack-flash3'
51
+ )
52
52
  end
53
53
  end
54
54
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'transproc'
2
4
 
3
5
  module WebPipe
@@ -12,4 +14,4 @@ module WebPipe
12
14
  end
13
15
  end
14
16
  end
15
- end
17
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'web_pipe/extensions/params/params/transf'
3
5
 
@@ -32,7 +34,7 @@ module WebPipe
32
34
  # @example
33
35
  # # http://www.example.com?foo=bar
34
36
  # conn.
35
- # add_config(:param_transformation, [:deep_symbolize_keys]).
37
+ # add_config(:param_transformations, [:deep_symbolize_keys]).
36
38
  # params #=> { foo: 'bar' }
37
39
  #
38
40
  # You can register your own transformation functions:
@@ -61,7 +63,7 @@ module WebPipe
61
63
  # # http://www.example.com?foo=bar
62
64
  # fake = ->(_params) { { fake: :params } }
63
65
  # conn.
64
- # params(fake) #=> { fake: :params }
66
+ # params(fake) #=> { fake: :params }
65
67
  #
66
68
  # @see https://github.com/solnic/transproc
67
69
  module Params
@@ -80,7 +82,7 @@ module WebPipe
80
82
  acc.>>transformation(t)
81
83
  end
82
84
 
83
- Transf[transformations].(request.params)
85
+ Transf[transformations].call(request.params)
84
86
  end
85
87
 
86
88
  private
@@ -90,10 +92,10 @@ module WebPipe
90
92
  if (transformation.fn.arity - transformation.args.count) == 1
91
93
  transformation
92
94
  else
93
- Transf[*[spec, self]]
95
+ Transf[spec, self]
94
96
  end
95
97
  end
96
98
  end
97
99
 
98
100
  Conn.include(Params)
99
- end
101
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
 
3
5
  module WebPipe
@@ -26,14 +28,14 @@ module WebPipe
26
28
 
27
29
  # Valid type for a redirect status code
28
30
  RedirectCode = Types::Strict::Integer.constrained(gteq: 300, lteq: 399)
29
-
30
- # @param path [String]
31
+
32
+ # @param location [String]
31
33
  # @param code [Integer]
32
- def redirect(path, code = 302)
33
- add_response_header(LOCATION_HEADER, path).
34
- set_status(RedirectCode[code])
34
+ def redirect(location, code = 302)
35
+ add_response_header(LOCATION_HEADER, location)
36
+ .set_status(RedirectCode[code])
35
37
  end
36
38
  end
37
39
 
38
40
  Conn.include(Redirect)
39
- end
41
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe'
2
4
  require 'web_pipe/types'
3
5
 
@@ -45,7 +47,7 @@ module WebPipe
45
47
  # @see https://github.com/hanami/router#string-matching-with-variables
46
48
  module RouterParams
47
49
  ROUTER_PARAM_KEY = 'router.params'
48
-
50
+
49
51
  # @param params [Hash]
50
52
  # @param conn [WebPipe::Conn]
51
53
  #
@@ -56,4 +58,4 @@ module WebPipe
56
58
 
57
59
  WebPipe::Params::Transf.register(:router_params, method(:call))
58
60
  end
59
- end
61
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/conn'
2
4
  require 'web_pipe/types'
3
5
  require 'rack'
@@ -13,13 +15,14 @@ module WebPipe
13
15
  #
14
16
  # @example
15
17
  # require 'web_pipe'
18
+ # require 'rack/session'
16
19
  #
17
20
  # WebPipe.load_extensions(:session)
18
21
  #
19
22
  # class MyApp
20
23
  # include WebPipe
21
24
  #
22
- # use Rack::Cookie, secret: 'top_secret'
25
+ # use Rack::Session::Cookie, secret: 'top_secret'
23
26
  #
24
27
  # plug :add_session, ->(conn) { conn.add_session('foo', 'bar') }
25
28
  # plug :fetch_session, ->(conn) { conn.add(:foo, conn.fetch_session('foo')) }
@@ -36,8 +39,8 @@ module WebPipe
36
39
  def session
37
40
  env.fetch(Rack::RACK_SESSION) do
38
41
  raise ConnSupport::MissingMiddlewareError.new(
39
- 'session', 'Rack::Session', 'https://www.rubydoc.info/github/rack/rack/Rack/Session'
40
- )
42
+ 'session', 'Rack::Session', 'https://www.rubydoc.info/github/rack/rack/Rack/Session'
43
+ )
41
44
  end
42
45
  end
43
46
 
@@ -53,7 +56,6 @@ module WebPipe
53
56
  session.fetch(*args, &block)
54
57
  end
55
58
 
56
-
57
59
  # Adds given key/value pair to the session.
58
60
  #
59
61
  # @param key [SESSION_KEY[]] Session key
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WebPipe
2
4
  # Adds helper methods related to the request URL.
3
5
  #
@@ -56,4 +58,4 @@ module WebPipe
56
58
  end
57
59
 
58
60
  Conn.include(Url)
59
- end
61
+ end
data/lib/web_pipe/plug.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry/struct'
2
4
  require 'web_pipe/types'
3
5
  require 'web_pipe/conn_support/composition'
@@ -81,10 +83,10 @@ module WebPipe
81
83
  spec
82
84
  elsif spec.nil?
83
85
  pipe.method(name)
84
- elsif container[spec] && container[spec].respond_to?(:call)
86
+ elsif container[spec]&.respond_to?(:call)
85
87
  container[spec]
86
88
  else
87
- raise InvalidPlugError.new(name)
89
+ raise InvalidPlugError, name
88
90
  end
89
91
  end
90
92
 
@@ -98,12 +100,12 @@ module WebPipe
98
100
  # @return [Array<ConnSupport::Composition::Operation[]>]
99
101
  def self.inject_and_resolve(plugs, injections, container, object)
100
102
  plugs.map do |plug|
101
- if injections.has_key?(plug.name)
103
+ if injections.key?(plug.name)
102
104
  plug.with(injections[plug.name])
103
105
  else
104
106
  plug
105
- end.(container, object)
107
+ end.call(container, object)
106
108
  end
107
109
  end
108
110
  end
109
- end
111
+ end
@@ -1,5 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WebPipe
2
4
  # Namespace for builders of operations on {WebPipe::Conn}.
5
+ #
6
+ # Plugs are just higher order functions: functions which return functions
7
+ # (operations). For this reason, as a convention its interface is also
8
+ # `#call`.
3
9
  module Plugs
4
10
  end
5
- end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'web_pipe/rack_support/middleware'
3
5
  require 'rack'
@@ -24,7 +26,7 @@ module WebPipe
24
26
 
25
27
  # @return [Rack::Builder]
26
28
  attr_reader :builder
27
-
29
+
28
30
  def initialize(rack_middlewares, app)
29
31
  @rack_middlewares = Types.Array(Middleware)[rack_middlewares]
30
32
  @app = App[app]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/types'
2
4
  require 'dry/struct'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry/struct'
2
4
  require 'web_pipe/rack_support/middleware'
3
5
  require 'web_pipe/types'
@@ -45,11 +47,11 @@ module WebPipe
45
47
  # @return [Array<RackSupport::Middleware>]
46
48
  def self.inject_and_resolve(middleware_specifications, injections)
47
49
  middleware_specifications.map do |spec|
48
- if injections.has_key?(spec.name)
50
+ if injections.key?(spec.name)
49
51
  spec.with(injections[spec.name])
50
52
  else
51
53
  spec
52
- end.()
54
+ end.call
53
55
  end.flatten
54
56
  end
55
57
 
@@ -69,7 +71,7 @@ module WebPipe
69
71
  # Returns new instance with {#spec} replaced.
70
72
  #
71
73
  # @param new_spec [Spec[]]
72
- #
74
+ #
73
75
  # @return [MiddlewareSpecification]
74
76
  def with(new_spec)
75
77
  new(spec: new_spec)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dry/types'
2
4
  require 'dry/core/constants'
3
5
 
@@ -9,4 +11,4 @@ module WebPipe
9
11
 
10
12
  Container = Interface(:[])
11
13
  end
12
- end
14
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WebPipe
2
- VERSION = "0.8.0"
4
+ VERSION = '0.9.0'
3
5
  end
data/lib/web_pipe.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'web_pipe/dsl/builder'
2
4
 
3
5
  # See [the
@@ -9,7 +11,7 @@ module WebPipe
9
11
  # Including just delegates to an instance of `Builder`, so
10
12
  # `Builder#included` is finally called.
11
13
  def self.included(klass)
12
- klass.include(call())
14
+ klass.include(call)
13
15
  end
14
16
 
15
17
  def self.call(*args)
@@ -24,7 +26,7 @@ module WebPipe
24
26
  require 'web_pipe/extensions/dry_schema/dry_schema'
25
27
  require 'web_pipe/extensions/dry_schema/plugs/sanitize_params'
26
28
  end
27
-
29
+
28
30
  register_extension :dry_view do
29
31
  require 'web_pipe/extensions/dry_view/dry_view'
30
32
  end
@@ -56,4 +58,4 @@ module WebPipe
56
58
  register_extension :url do
57
59
  require 'web_pipe/extensions/url/url'
58
60
  end
59
- end
61
+ end
data/web_pipe.gemspec CHANGED
@@ -1,54 +1,54 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "web_pipe/version"
5
+ require 'web_pipe/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "web_pipe"
8
+ spec.name = 'web_pipe'
9
9
  spec.version = WebPipe::VERSION
10
- spec.authors = ["Marc Busqué"]
11
- spec.email = ["marc@lamarciana.com"]
10
+ spec.authors = ['Marc Busqué']
11
+ spec.email = ['marc@lamarciana.com']
12
12
 
13
- spec.summary = %q{Rack application builder through a pipe of operations on an immutable struct.}
14
- spec.homepage = "https://github.com/waiting-for-dev/web_pipe"
13
+ spec.summary = 'Rack application builder through a pipe of operations on an immutable struct.'
14
+ spec.homepage = 'https://github.com/waiting-for-dev/web_pipe'
15
15
 
16
16
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
17
  # to allow pushing to a single host or delete this section to allow pushing to any host.
18
18
  if spec.respond_to?(:metadata)
19
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
19
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
20
20
 
21
- spec.metadata["homepage_uri"] = spec.homepage
22
- spec.metadata["source_code_uri"] = spec.homepage
23
- spec.metadata["changelog_uri"] = spec.homepage + '/CHANGELOG.md'
21
+ spec.metadata['homepage_uri'] = spec.homepage
22
+ spec.metadata['source_code_uri'] = spec.homepage
23
+ spec.metadata['changelog_uri'] = spec.homepage + '/CHANGELOG.md'
24
24
  else
25
- raise "RubyGems 2.0 or newer is required to protect against " \
26
- "public gem pushes."
25
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
26
+ 'public gem pushes.'
27
27
  end
28
28
 
29
29
  # Specify which files should be added to the gem when it is released.
30
30
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
31
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
31
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
32
32
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
33
33
  end
34
- spec.bindir = "exe"
34
+ spec.bindir = 'exe'
35
35
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
- spec.require_paths = ["lib"]
37
-
38
- spec.add_runtime_dependency "rack", "~> 2.0"
39
- spec.add_runtime_dependency "dry-monads", "~> 1.3"
40
- spec.add_runtime_dependency "dry-types", "~> 1.1"
41
- spec.add_runtime_dependency "dry-struct", "~> 1.0"
42
- spec.add_runtime_dependency "transproc", "~> 1.1"
43
-
44
- spec.add_development_dependency "bundler", "~> 1.17"
45
- spec.add_development_dependency "rake", "~> 10.0"
46
- spec.add_development_dependency "rspec", "~> 3.0"
47
- spec.add_development_dependency "rack-test", "~> 1.1"
48
- spec.add_development_dependency "yard", "~> 0.9", ">= 0.9.20"
49
- spec.add_development_dependency "redcarpet", "~> 3.4"
50
- spec.add_development_dependency "pry-byebug"
51
- spec.add_development_dependency "dry-view", "~> 0.7"
52
- spec.add_development_dependency "rack-flash3", "~> 1.0"
53
- spec.add_development_dependency "dry-schema", "~> 1.0"
36
+ spec.require_paths = ['lib']
37
+
38
+ spec.add_runtime_dependency 'dry-monads', '~> 1.3'
39
+ spec.add_runtime_dependency 'dry-struct', '~> 1.0'
40
+ spec.add_runtime_dependency 'dry-types', '~> 1.1'
41
+ spec.add_runtime_dependency 'rack', '~> 2.0'
42
+ spec.add_runtime_dependency 'transproc', '~> 1.1'
43
+
44
+ spec.add_development_dependency 'bundler', '~> 1.17'
45
+ spec.add_development_dependency 'dry-schema', '~> 1.0'
46
+ spec.add_development_dependency 'dry-view', '~> 0.7'
47
+ spec.add_development_dependency 'pry-byebug'
48
+ spec.add_development_dependency 'rack-flash3', '~> 1.0'
49
+ spec.add_development_dependency 'rack-test', '~> 1.1'
50
+ spec.add_development_dependency 'rake', '~> 10.0'
51
+ spec.add_development_dependency 'redcarpet', '~> 3.4'
52
+ spec.add_development_dependency 'rspec', '~> 3.0'
53
+ spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.20'
54
54
  end