jb 0.6.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85a34b7b4a0cd8cd4bfd32bc44021c6047f7c78dc77b3bce9fafe43ab0d82830
4
- data.tar.gz: de224b08f0492fa32932377cb7c4c4052a5160cb76e5c25b5f75da47be32602d
3
+ metadata.gz: 9c707621b4d6ba3cbaa4de4b318663845a7b818abf61eb3627b7b00e0528060d
4
+ data.tar.gz: e5e190db6aef763bacf00c4d172bba4d6e6b12c158e56df7155031dd400d8950
5
5
  SHA512:
6
- metadata.gz: d7614ee922fd93b2d30fa51e8525da65a395c4a3dc82d26d535e53fe4a78886037b7ef0672bf417e56544242a06c31baec4d389e46385490767144a66038fa1c
7
- data.tar.gz: b29639a9d5fbee1e1c0a77218dbfa110744dcf1b9819c26de0ead0b86c5afea3e696cf9122c804bf1e932ce27179cc11c3cd07e29ab614194f07b1c1f7aece76
6
+ metadata.gz: f038b6e4eaaf94b1a55111943a72a528681326b32e3112c3b010163c806ce146cb19151b319c4677f74873760815db072aba22b9ad53763c0b621289973ce47b
7
+ data.tar.gz: 3a8318862bc399f9d0e27048b8902ed89f51fe9b9cfa1f832043b089bf5bbee2130672deb965a332631b48142a24140a13c771465db1e57c39dc3cf3fe1ab16b
@@ -1,13 +1,14 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
 
4
- before_install: gem up --system && gem i bundler -v '<2'
4
+ before_install: "gem uni -x -i /home/travis/.rvm/gems/ruby-2.5.5@global bundler && gem i bundler -v '<2'"
5
5
 
6
6
  rvm:
7
- - 2.6.0
8
- - 2.5.3
7
+ - 2.6.2
8
+ - 2.5.5
9
9
 
10
10
  gemfile:
11
+ - gemfiles/rails_60.gemfile
11
12
  - gemfiles/rails_52.gemfile
12
13
  - gemfiles/rails_51.gemfile
13
14
  - gemfiles/rails_50.gemfile
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec :path => '../'
6
+
7
+ gem 'rails', '~> 6.0.0.beta3'
8
+ gem 'selenium-webdriver'
data/jb.gemspec CHANGED
@@ -28,4 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'test-unit-rails'
29
29
  spec.add_development_dependency 'rails'
30
30
  spec.add_development_dependency 'action_args'
31
+ spec.add_development_dependency 'byebug'
31
32
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+ # Mokey-patches for Action View 4 and 5
3
+
4
+ module Jb
5
+ module PartialRenderer
6
+ module JbTemplateDetector
7
+ # A monkey-patch to inject StrongArray module to Jb partial renderer
8
+ private def find_partial(*)
9
+ template = super
10
+ extend RenderCollectionExtension if template && (template.handler == Jb::Handler)
11
+ template
12
+ end
13
+ end
14
+
15
+ # A horrible monkey-patch to prevent rendered collection from being converted to String
16
+ module StrongArray
17
+ def join(*)
18
+ self
19
+ end
20
+
21
+ def html_safe
22
+ self
23
+ end
24
+ end
25
+
26
+ # A monkey-patch strengthening rendered collection
27
+ module RenderCollectionExtension
28
+ private def collection_with_template
29
+ super.extend StrongArray
30
+ end
31
+
32
+ private def collection_without_template
33
+ super.extend StrongArray
34
+ end
35
+
36
+ private def render_collection
37
+ return [] if @collection.blank?
38
+ super
39
+ end
40
+ end
41
+ end
42
+
43
+ # A monkey-patch that converts non-partial result to a JSON String
44
+ module TemplateRenderer
45
+ module JSONizer
46
+ def render_template(template, *)
47
+ template.respond_to?(:handler) && (template.handler == Jb::Handler) ? MultiJson.dump(super) : super
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ ::ActionView::PartialRenderer.prepend ::Jb::PartialRenderer::JbTemplateDetector
54
+ ::ActionView::TemplateRenderer.prepend ::Jb::TemplateRenderer::JSONizer
@@ -1,55 +1,33 @@
1
1
  # frozen_string_literal: true
2
-
3
- require 'multi_json'
2
+ # Mokey-patches for Action View 6+
4
3
 
5
4
  module Jb
6
- module PartialRenderer
7
- module JbTemplateDetector
8
- # A monkey-patch to inject StrongArray module to Jb partial renderer
9
- private def find_partial
10
- template = super
11
- extend RenderCollectionExtension if template && (template.handler == Jb::Handler)
12
- template
13
- end
14
- end
15
-
16
- # A horrible monkey-patch to prevent rendered collection from being converted to String
17
- module StrongArray
18
- def join(*)
19
- self
20
- end
21
-
22
- def html_safe
23
- self
24
- end
25
- end
26
-
27
- # A monkey-patch strengthening rendered collection
28
- module RenderCollectionExtension
29
- private def collection_with_template
30
- super.extend StrongArray
31
- end
32
-
33
- private def collection_without_template
34
- super.extend StrongArray
35
- end
36
-
37
- private def render_collection
38
- return [] if @collection.blank?
39
- super
5
+ # A monkey-patch that converts non-partial result to a JSON String
6
+ module TemplateRenderer
7
+ module JSONizer
8
+ def render_template(_view, template, *)
9
+ rendered_template = super
10
+ rendered_template.instance_variable_set :@body, MultiJson.dump(rendered_template.body) if template.respond_to?(:handler) && (template.handler == Jb::Handler)
11
+ rendered_template
40
12
  end
41
13
  end
42
14
  end
43
15
 
44
- # A monkey-patch that converts non-partial result to a JSON String
45
- module TemplateRenderer
46
- module JSONizer
47
- def render_template(template, *)
48
- template.respond_to?(:handler) && (template.handler == Jb::Handler) ? MultiJson.dump(super) : super
16
+ # A monkey-patch for jb template collection result's `body` not to return a String but an Array
17
+ module PartialRendererExtension
18
+ private def render_collection(_view, template)
19
+ obj = super
20
+ if template.respond_to?(:handler) && (template.handler == Jb::Handler)
21
+ if ActionView::AbstractRenderer::RenderedCollection::EmptyCollection === obj
22
+ def obj.body; []; end
23
+ else
24
+ def obj.body; @rendered_templates.map(&:body); end
25
+ end
49
26
  end
27
+ obj
50
28
  end
51
29
  end
52
30
  end
53
31
 
54
- ::ActionView::PartialRenderer.prepend ::Jb::PartialRenderer::JbTemplateDetector
55
32
  ::ActionView::TemplateRenderer.prepend ::Jb::TemplateRenderer::JSONizer
33
+ ::ActionView::PartialRenderer.prepend ::Jb::PartialRendererExtension
@@ -4,7 +4,12 @@ module Jb
4
4
  class Railtie < ::Rails::Railtie
5
5
  initializer 'jb' do
6
6
  ActiveSupport.on_load :action_view do
7
- require 'jb/action_view_monkeys'
7
+ require 'multi_json'
8
+ if Rails::VERSION::MAJOR >= 6
9
+ require 'jb/action_view_monkeys'
10
+ else
11
+ require 'jb/action_view_legacy_monkeys'
12
+ end
8
13
  require 'jb/handler'
9
14
  ::ActionView::Template.register_template_handler :jb, Jb::Handler
10
15
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Jb
4
- VERSION = '0.6.1'
4
+ VERSION = '0.7.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-03 00:00:00.000000000 Z
11
+ date: 2019-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Faster and simpler JSON renderer for Rails
98
112
  email:
99
113
  - ronnie@dio.jp
@@ -115,12 +129,14 @@ files:
115
129
  - gemfiles/rails_50.gemfile
116
130
  - gemfiles/rails_51.gemfile
117
131
  - gemfiles/rails_52.gemfile
132
+ - gemfiles/rails_60.gemfile
118
133
  - jb.gemspec
119
134
  - lib/generators/rails/jb_generator.rb
120
135
  - lib/generators/rails/scaffold_controller_generator.rb
121
136
  - lib/generators/rails/templates/index.json.jb
122
137
  - lib/generators/rails/templates/show.json.jb
123
138
  - lib/jb.rb
139
+ - lib/jb/action_view_legacy_monkeys.rb
124
140
  - lib/jb/action_view_monkeys.rb
125
141
  - lib/jb/handler.rb
126
142
  - lib/jb/railtie.rb
@@ -144,8 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
160
  - !ruby/object:Gem::Version
145
161
  version: '0'
146
162
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.7.8
163
+ rubygems_version: 3.0.3
149
164
  signing_key:
150
165
  specification_version: 4
151
166
  summary: Faster and simpler Jbuilder alternative