jb 0.6.1 → 0.7.0

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