breezy 0.6.0 → 0.7.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 +4 -4
- data/lib/breezy.rb +1 -3
- data/lib/breezy/helpers.rb +4 -14
- data/lib/breezy/render.rb +14 -16
- data/lib/breezy/xhr_headers.rb +0 -9
- data/lib/generators/rails/templates/controller.rb.tt +2 -2
- data/lib/install/web.rb +1 -2
- data/test/breezy_test.rb +1 -1
- data/test/render_test.rb +33 -11
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 771f9d31bef6c944ac17451b327c874eeb0d3b84
|
4
|
+
data.tar.gz: 6d3b19c6baa857e945254e11fc21b9352f78310d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e64b71d987909c4493fc0d71aba31c7229e149f7dd7d75d56ab49b2b3d87de1be87666ab63ec037fba02fe8292b2d5b700c7a53a1c1a352d4bcd99231058ee2
|
7
|
+
data.tar.gz: 53cfe54342341a4964ae02dc45c4d440e561a09a3c58dcc329797f1c6f2a2f8e0411e5fe66b49e5c25ad3c71bc3c8ee94de32a7879c4afe3dbe1f60418447c4c
|
data/lib/breezy.rb
CHANGED
@@ -20,10 +20,8 @@ module Breezy
|
|
20
20
|
end
|
21
21
|
|
22
22
|
if base.respond_to?(:helper_method)
|
23
|
-
base.helper_method :breezy_tag
|
24
|
-
base.helper_method :breezy_silient?
|
25
23
|
base.helper_method :breezy_snippet
|
26
|
-
base.helper_method :
|
24
|
+
base.helper_method :use_breezy
|
27
25
|
base.helper_method :breezy_filter
|
28
26
|
end
|
29
27
|
end
|
data/lib/breezy/helpers.rb
CHANGED
@@ -1,24 +1,14 @@
|
|
1
1
|
module Breezy
|
2
2
|
module Helpers
|
3
|
-
def breezy_tag
|
4
|
-
if defined?(@breezy) && @breezy
|
5
|
-
"<script type='text/javascript'>Breezy.replace(#{@breezy});</script>".html_safe
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
3
|
def breezy_snippet
|
10
|
-
if defined?(@
|
11
|
-
snippet = @
|
4
|
+
if defined?(@_breezy_snippet) && @_breezy_snippet
|
5
|
+
snippet = @_breezy_snippet.gsub(/\;$/, '')
|
12
6
|
"#{snippet};".html_safe
|
13
7
|
end
|
14
8
|
end
|
15
9
|
|
16
|
-
def
|
17
|
-
@
|
18
|
-
end
|
19
|
-
|
20
|
-
def breezy_silient?
|
21
|
-
!!request.headers["X-SILENT"]
|
10
|
+
def use_breezy
|
11
|
+
@_use_breezy = true
|
22
12
|
end
|
23
13
|
|
24
14
|
def breezy_filter
|
data/lib/breezy/render.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Breezy
|
2
2
|
module Render
|
3
3
|
def default_render(*args)
|
4
|
-
if @
|
4
|
+
if @_use_breezy
|
5
5
|
render(*args)
|
6
6
|
else
|
7
7
|
super
|
@@ -9,28 +9,26 @@ module Breezy
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def render(*args, &block)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
if breezy == true
|
16
|
-
breezy = {}
|
12
|
+
if !@_use_breezy
|
13
|
+
return super
|
17
14
|
end
|
18
15
|
|
19
|
-
|
16
|
+
render_options = args.extract_options!
|
17
|
+
breezy_options = render_options.delete(:breezy)
|
18
|
+
|
19
|
+
if !breezy_options
|
20
20
|
breezy = {}
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
render_options[:locals][:breezy] = breezy
|
26
|
-
end
|
23
|
+
render_options[:locals] ||= {}
|
24
|
+
render_options[:locals][:breezy] = breezy
|
27
25
|
|
28
|
-
if
|
29
|
-
|
26
|
+
if request.format == :html
|
27
|
+
original_formats = self.formats
|
28
|
+
@_breezy_snippet = render_to_string(*args, render_options.merge(formats: [:js]))
|
29
|
+
self.formats = original_formats
|
30
30
|
|
31
|
-
|
32
|
-
self.formats = original_formats
|
33
|
-
render_options.reverse_merge!(formats: original_formats, template: 'breezy/response')
|
31
|
+
render_options.reverse_merge!(formats: original_formats, template: 'breezy/response')
|
34
32
|
end
|
35
33
|
|
36
34
|
super(*args, render_options, &block)
|
data/lib/breezy/xhr_headers.rb
CHANGED
@@ -19,15 +19,6 @@ module Breezy
|
|
19
19
|
|
20
20
|
if request.xhr? && request.headers["X-BREEZY-REQUEST"]
|
21
21
|
self.status = 200
|
22
|
-
|
23
|
-
if params['_bz'] && !url.include?('_bz')
|
24
|
-
parsed_url = URI.parse(url)
|
25
|
-
qry_with_bz = URI.decode_www_form(String(parsed_url.query)) << ["_bz", params['_bz']]
|
26
|
-
parsed_url.query = URI.encode_www_form(qry_with_bz)
|
27
|
-
|
28
|
-
url = parsed_url.to_s
|
29
|
-
end
|
30
|
-
|
31
22
|
response.headers["X-BREEZY-LOCATION"] = url
|
32
23
|
end
|
33
24
|
|
@@ -5,9 +5,9 @@ require_dependency "<%= namespaced_path %>/application_controller"
|
|
5
5
|
<% module_namespacing do -%>
|
6
6
|
class <%= controller_class_name %>Controller < ApplicationController
|
7
7
|
before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
|
8
|
-
# `
|
8
|
+
# `use_breezy` enables breezy functionality
|
9
9
|
# on application.html.erb
|
10
|
-
before_action :
|
10
|
+
before_action :use_breezy
|
11
11
|
|
12
12
|
# GET <%= route_url %>
|
13
13
|
def index
|
data/lib/install/web.rb
CHANGED
@@ -85,8 +85,7 @@ say "Adding required member methods to ApplicationRecord"
|
|
85
85
|
add_member_methods
|
86
86
|
|
87
87
|
say "Installing React, Redux, and Breezy"
|
88
|
-
run "yarn add
|
89
|
-
run "yarn add babel-plugin-module-resolver --save-dev"
|
88
|
+
run "yarn add babel-plugin-module-resolver babel-preset-react formik history prop-types react-redux redux-thunk redux react react-dom @jho406/breezy --save"
|
90
89
|
|
91
90
|
say "Updating webpack paths to include .jsx file extension"
|
92
91
|
insert_into_file Webpacker.config.config_path, " - .jsx\n", after: /extensions:\n/
|
data/test/breezy_test.rb
CHANGED
data/test/render_test.rb
CHANGED
@@ -8,16 +8,19 @@ class RenderController < TestController
|
|
8
8
|
'render/action.html.erb' => 'john smith',
|
9
9
|
'render/implied_render_with_breezy.js.breezy' => 'json.author "john smith"',
|
10
10
|
'render/implied_render_with_breezy.html.erb' => 'john smith',
|
11
|
-
'layouts/application.html.erb' =>
|
11
|
+
'layouts/application.html.erb' => <<~HTML
|
12
|
+
<html>
|
13
|
+
<head>
|
14
|
+
<script><%= breezy_snippet %></script>
|
15
|
+
</head>
|
16
|
+
<body><%=yield%></body>
|
17
|
+
</html>
|
18
|
+
HTML
|
12
19
|
))
|
13
20
|
|
14
21
|
layout 'application'
|
15
22
|
|
16
|
-
before_action
|
17
|
-
@_use_breezy_html = false
|
18
|
-
end
|
19
|
-
|
20
|
-
before_action :use_breezy_html, only: [:simple_render_with_breezy, :implied_render_with_breezy]
|
23
|
+
before_action :use_breezy, only: [:simple_render_with_breezy, :implied_render_with_breezy]
|
21
24
|
|
22
25
|
def render_action
|
23
26
|
render :action
|
@@ -31,7 +34,7 @@ class RenderController < TestController
|
|
31
34
|
end
|
32
35
|
|
33
36
|
def render_action_with_breezy_false
|
34
|
-
render :action
|
37
|
+
render :action
|
35
38
|
end
|
36
39
|
|
37
40
|
def form_authenticity_token
|
@@ -60,12 +63,12 @@ class RenderTest < ActionController::TestCase
|
|
60
63
|
|
61
64
|
test "simple render with breezy" do
|
62
65
|
get :simple_render_with_breezy
|
63
|
-
assert_breezy_html({author: "john smith"}, screen:
|
66
|
+
assert_breezy_html({author: "john smith"}, screen: 'render/action')
|
64
67
|
end
|
65
68
|
|
66
69
|
test "implied render with breezy" do
|
67
70
|
get :implied_render_with_breezy
|
68
|
-
assert_breezy_html({author: "john smith"}, screen:
|
71
|
+
assert_breezy_html({author: "john smith"}, screen: 'render/implied_render_with_breezy')
|
69
72
|
end
|
70
73
|
|
71
74
|
test "simple render with breezy via get js" do
|
@@ -102,7 +105,16 @@ class RenderTest < ActionController::TestCase
|
|
102
105
|
def assert_breezy_html(content, opts={})
|
103
106
|
assert_response 200
|
104
107
|
|
105
|
-
|
108
|
+
rendered = <<~HTML
|
109
|
+
<html>
|
110
|
+
<head>
|
111
|
+
<script>(function(){var joints={};var cache={};var defers=[];return ({"data":#{content.to_json},"screen":"#{opts[:screen]}","csrf_token":"secret","assets":["/app.js"],"joints":joints,"defers":defers});})();</script>
|
112
|
+
</head>
|
113
|
+
<body></body>
|
114
|
+
</html>
|
115
|
+
HTML
|
116
|
+
|
117
|
+
assert_equal rendered, @response.body
|
106
118
|
assert_equal 'text/html', @response.content_type
|
107
119
|
end
|
108
120
|
|
@@ -120,7 +132,17 @@ class RenderTest < ActionController::TestCase
|
|
120
132
|
|
121
133
|
def assert_normal_render(content)
|
122
134
|
assert_response 200
|
123
|
-
|
135
|
+
|
136
|
+
rendered = <<~HTML
|
137
|
+
<html>
|
138
|
+
<head>
|
139
|
+
<script></script>
|
140
|
+
</head>
|
141
|
+
<body>#{content}</body>
|
142
|
+
</html>
|
143
|
+
HTML
|
144
|
+
|
145
|
+
assert_equal rendered, @response.body
|
124
146
|
assert_equal 'text/html', @response.content_type
|
125
147
|
end
|
126
148
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: breezy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johny Ho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.7.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.7.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: webpacker
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|