simple_json 0.0.0 → 0.1.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/.github/workflows/main.yml +5 -39
- data/README.md +50 -6
- data/gemfiles/{rails_60.gemfile → rails_7.1.gemfile} +1 -1
- data/gemfiles/{rails_61.gemfile → rails_7.2.gemfile} +1 -1
- data/gemfiles/{rails_51.gemfile → rails_8.0.gemfile} +2 -1
- data/lib/simple_json/simple_json_renderable.rb +1 -1
- data/lib/simple_json/version.rb +1 -1
- data/lib/simple_json.rb +1 -2
- data/simple_json.gemspec +5 -4
- metadata +33 -23
- data/gemfiles/rails_42.gemfile +0 -9
- data/gemfiles/rails_50.gemfile +0 -8
- data/gemfiles/rails_52.gemfile +0 -8
- data/lib/simple_json/json.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a56e99e174ee5d2165009b5f97816af1dd98b339a8374cfdb2adc6ee60d0def3
|
4
|
+
data.tar.gz: 8dd4dafd8bc2cbaf05e6f54b86397917270ff971f03a041b85c6832b2061c294
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1735930768817f1ed0d1bb22771e084ee782573e8c32d1386bb38862f4b8d2cff3dfa0c982873bf5b6a04d1d4ab0590c4031e1af3dbd9d2819b0bb15e4b32205
|
7
|
+
data.tar.gz: f4f8f62d99abcf3a0534dcc54830f2d93aa8bcb1b70ebaecea8fc83ba0c7bdc95afc9ccfe42a4b36d4b4774a5512e4da5d14c49cab4d4ae5d48cdbe687a5de36
|
data/.github/workflows/main.yml
CHANGED
@@ -6,52 +6,18 @@ jobs:
|
|
6
6
|
build:
|
7
7
|
strategy:
|
8
8
|
matrix:
|
9
|
-
|
10
|
-
|
11
|
-
gemfile:
|
12
|
-
- gemfiles/rails_61.gemfile
|
13
|
-
- gemfiles/rails_60.gemfile
|
14
|
-
|
15
|
-
include:
|
16
|
-
- ruby_version: ruby-head
|
17
|
-
gemfile: gemfiles/rails_edge.gemfile
|
18
|
-
allow_failures: 'true'
|
19
|
-
- ruby_version: '3.0'
|
20
|
-
gemfile: gemfiles/rails_edge.gemfile
|
21
|
-
allow_failures: 'true'
|
22
|
-
|
23
|
-
- ruby_version: '2.7'
|
24
|
-
gemfile: gemfiles/rails_edge.gemfile
|
25
|
-
allow_failures: 'true'
|
26
|
-
|
27
|
-
- ruby_version: '2.6'
|
28
|
-
gemfile: gemfiles/rails_52.gemfile
|
29
|
-
- ruby_version: '2.6'
|
30
|
-
gemfile: gemfiles/rails_51.gemfile
|
31
|
-
- ruby_version: '2.6'
|
32
|
-
gemfile: gemfiles/rails_50.gemfile
|
33
|
-
- ruby_version: '2.6'
|
34
|
-
gemfile: gemfiles/rails_42.gemfile
|
35
|
-
bundler_version: '1'
|
36
|
-
|
37
|
-
- ruby_version: '2.5'
|
38
|
-
gemfile: gemfiles/rails_52.gemfile
|
39
|
-
- ruby_version: '2.5'
|
40
|
-
gemfile: gemfiles/rails_42.gemfile
|
41
|
-
bundler_version: '1'
|
9
|
+
ruby: ['3.2', '3.3', '3.4']
|
10
|
+
rails: ["7.1", "7.2", "8.0"]
|
42
11
|
|
43
12
|
runs-on: ubuntu-latest
|
44
13
|
|
45
14
|
env:
|
46
|
-
BUNDLE_GEMFILE: ${{ matrix.
|
15
|
+
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile
|
47
16
|
|
48
17
|
steps:
|
49
|
-
- uses: actions/checkout@
|
18
|
+
- uses: actions/checkout@v4
|
50
19
|
- uses: ruby/setup-ruby@v1
|
51
20
|
with:
|
52
|
-
ruby-version: ${{ matrix.
|
53
|
-
bundler: ${{ matrix.bundler_version }}
|
21
|
+
ruby-version: ${{ matrix.ruby }}
|
54
22
|
bundler-cache: true
|
55
|
-
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
56
23
|
- run: bundle exec rake
|
57
|
-
continue-on-error: ${{ matrix.allow_failures == 'true' }}
|
data/README.md
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
# SimpleJson
|
2
|
+
|
2
3
|
A simple & fast solution for Rails JSON rendering.
|
3
4
|
|
4
5
|
## Get started
|
6
|
+
|
5
7
|
In Gemfile
|
8
|
+
|
6
9
|
```ruby
|
7
10
|
gem 'simple_json'
|
8
11
|
```
|
9
12
|
|
10
13
|
In controller
|
14
|
+
|
11
15
|
```ruby
|
12
16
|
class ApplicationController < ActionController::Base
|
13
17
|
include SimpleJson::SimpleJsonRenderable
|
@@ -44,10 +48,13 @@ That's all!
|
|
44
48
|
Have fun!
|
45
49
|
|
46
50
|
## Special thanks
|
51
|
+
|
47
52
|
This project is built on work of [jb](https://github.com/amatsuda/jb).
|
48
53
|
|
49
54
|
## Template Syntax
|
55
|
+
|
50
56
|
SimpleJson templates are simply lambda objects that return data(Hashes or Arrays) for json.
|
57
|
+
|
51
58
|
```ruby
|
52
59
|
-> {
|
53
60
|
{
|
@@ -55,7 +62,9 @@ SimpleJson templates are simply lambda objects that return data(Hashes or Arrays
|
|
55
62
|
}
|
56
63
|
}
|
57
64
|
```
|
65
|
+
|
58
66
|
When no parameters specified, `-> {` and `}` can be omitted.
|
67
|
+
|
59
68
|
```ruby
|
60
69
|
{
|
61
70
|
key: @value,
|
@@ -82,14 +91,16 @@ Use `partial!` method to call another template in template. Note that path is al
|
|
82
91
|
}
|
83
92
|
```
|
84
93
|
|
85
|
-
Cache helpers of
|
94
|
+
Cache helpers of simple_json is similar to jbuilder.
|
95
|
+
|
86
96
|
```ruby
|
87
97
|
cache! key, options do
|
88
98
|
data_to_cache
|
89
99
|
end
|
90
100
|
```
|
91
101
|
|
92
|
-
Cache helpers uses `Rails.cache` to cache, so
|
102
|
+
Cache helpers uses `Rails.cache` to cache, so array keys, expirations are available. Make sure `perform_caching` is enabled.
|
103
|
+
|
93
104
|
```ruby
|
94
105
|
cache! [key1, key2], expires_in: 10.minutes do
|
95
106
|
data_to_cache
|
@@ -97,6 +108,7 @@ end
|
|
97
108
|
```
|
98
109
|
|
99
110
|
`cache_if!` is also available
|
111
|
+
|
100
112
|
```ruby
|
101
113
|
cache_if! boolean, key1, options do
|
102
114
|
data_to_cache
|
@@ -104,41 +116,68 @@ end
|
|
104
116
|
```
|
105
117
|
|
106
118
|
You can set key_prefix for caching like this
|
119
|
+
|
107
120
|
```ruby
|
108
121
|
SimpleJson.cache_key_prefix = "MY_PREFIX"
|
109
122
|
```
|
110
123
|
|
111
|
-
##
|
124
|
+
## Configurations
|
125
|
+
|
112
126
|
Load all templates on boot. (For production)
|
113
127
|
Templates loaded will not load again, so it is not recommended in development environment.
|
128
|
+
|
114
129
|
```ruby
|
115
130
|
# config/environments/production.rb
|
116
131
|
SimpleJson.enable_template_cache
|
117
132
|
```
|
118
133
|
|
119
134
|
The default path for templates is `app/views`, you can change it by
|
135
|
+
|
120
136
|
```ruby
|
121
137
|
SimpleJson.template_paths.append("app/simple_jsons")
|
122
138
|
# or
|
123
139
|
SimpleJson.template_paths=["app/views", "app/simple_jsons"]
|
124
140
|
```
|
141
|
+
|
125
142
|
Note that these paths should not be eager loaded cause using .rb as suffix.
|
126
143
|
|
127
|
-
SimpleJson uses
|
144
|
+
SimpleJson uses ActiveSupport::JSON as the default JSON serializer. If you want to change to a module that has `#encode` and `#decode` methods, such as the Oj gem, you can do so as follows.
|
145
|
+
|
128
146
|
```ruby
|
129
|
-
|
147
|
+
|
148
|
+
# define Custom Json class
|
149
|
+
# ex. config/initializers/simple_json/json.rb
|
150
|
+
module SimpleJson
|
151
|
+
module Json
|
152
|
+
class Oj
|
153
|
+
def self.encode(json)
|
154
|
+
::Oj.dump(json, mode: :rails)
|
155
|
+
end
|
156
|
+
|
157
|
+
def self.decode(json_string)
|
158
|
+
::Oj.load(json_string, mode: :rails)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
SimpleJson.json_module = SimpleJson::Json::Oj
|
130
165
|
```
|
131
166
|
|
132
167
|
## The Generator
|
168
|
+
|
133
169
|
SimpleJson extends the default Rails scaffold generator and adds some simple_json templates. If you don't need them, please configure like so.
|
170
|
+
|
134
171
|
```rb
|
135
172
|
Rails.application.config.generators.simple_json false
|
136
173
|
```
|
137
174
|
|
138
175
|
## Benchmarks
|
176
|
+
|
139
177
|
Here're the results of a benchmark (which you can find [here](https://github.com/aktsk/simple_json/blob/master/test/dummy_app/app/controllers/benchmarks_controller.rb) in this repo) rendering a collection to JSON.
|
140
178
|
|
141
179
|
### RAILS_ENV=development
|
180
|
+
|
142
181
|
```
|
143
182
|
% ./bin/benchmark.sh
|
144
183
|
|
@@ -189,7 +228,9 @@ Comparison:
|
|
189
228
|
jb: 106.1 i/s - 2.56x (± 0.00) slower
|
190
229
|
jbuilder: 13.0 i/s - 20.88x (± 0.00) slower
|
191
230
|
```
|
231
|
+
|
192
232
|
### RAILS_ENV=production
|
233
|
+
|
193
234
|
```
|
194
235
|
% RAILS_ENV=production ./bin/benchmark.sh
|
195
236
|
|
@@ -242,13 +283,16 @@ Comparison:
|
|
242
283
|
```
|
243
284
|
|
244
285
|
## Migrating from Jbuilder
|
286
|
+
|
245
287
|
When migrating from Jbuilder, you can include `Migratable` in controller for migrating mode.
|
288
|
+
|
246
289
|
```
|
247
290
|
include SimpleJson::SimpleJsonRenderable
|
248
291
|
include SimpleJson::Migratable
|
249
292
|
```
|
250
293
|
|
251
294
|
In migrating mode
|
295
|
+
|
252
296
|
- Comparision will be performed for simple_json and ActionView render(Jbuilder) result.
|
253
297
|
- simple_json partials not found will use Jbuilder partial as an alternative.
|
254
298
|
|
@@ -256,7 +300,7 @@ Note that render will be performed twice, so using it in production mode is not
|
|
256
300
|
|
257
301
|
## Contributing
|
258
302
|
|
259
|
-
Pull requests are welcome on GitHub at https://github.com/aktsk/simple_json
|
303
|
+
Pull requests are welcome on GitHub at <https://github.com/aktsk/simple_json>.
|
260
304
|
|
261
305
|
## License
|
262
306
|
|
@@ -29,7 +29,7 @@ module SimpleJson
|
|
29
29
|
# use super when any of [:body, :plain, :html] exist in options
|
30
30
|
return super if self.class::RENDER_FORMATS_IN_PRIORITY.any? { |key| options.key? key }
|
31
31
|
|
32
|
-
template_name = template_name(options[:template] || action_name)
|
32
|
+
template_name = template_name(options[:template] || options[:action] || action_name)
|
33
33
|
if options.key?(:json)
|
34
34
|
process_options(options)
|
35
35
|
@rendered_format = 'application/json; charset=utf-8'
|
data/lib/simple_json/version.rb
CHANGED
data/lib/simple_json.rb
CHANGED
@@ -8,14 +8,13 @@ require 'simple_json/simple_json_template'
|
|
8
8
|
|
9
9
|
require 'simple_json/migratable'
|
10
10
|
require 'simple_json/simple_json_renderer_for_migration'
|
11
|
-
require 'simple_json/json'
|
12
11
|
|
13
12
|
module SimpleJson
|
14
13
|
@config = {
|
15
14
|
cache_enabled: false,
|
16
15
|
template_paths: ['app/views'],
|
17
16
|
cache_key_prefix: 'simple_json/views',
|
18
|
-
default_json_module:
|
17
|
+
default_json_module: ActiveSupport::JSON
|
19
18
|
}
|
20
19
|
|
21
20
|
class << self
|
data/simple_json.gemspec
CHANGED
@@ -20,15 +20,16 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.
|
23
|
+
spec.add_development_dependency 'oj'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'action_args'
|
26
26
|
spec.add_development_dependency 'bundler'
|
27
|
-
spec.add_development_dependency '
|
28
|
-
spec.add_development_dependency 'rails'
|
27
|
+
spec.add_development_dependency 'debug'
|
28
|
+
spec.add_development_dependency 'rails', '~> 8.0'
|
29
29
|
spec.add_development_dependency 'rake'
|
30
30
|
spec.add_development_dependency 'selenium-webdriver'
|
31
31
|
spec.add_development_dependency 'test-unit-rails'
|
32
|
+
spec.add_development_dependency 'mutex_m'
|
32
33
|
|
33
|
-
spec.required_ruby_version = '>= 2.
|
34
|
+
spec.required_ruby_version = '>= 3.2.0'
|
34
35
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jingyuan Zhao
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: action_args
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: debug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -68,6 +68,20 @@ dependencies:
|
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rails
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '8.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '8.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - ">="
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: selenium-webdriver
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -95,7 +109,7 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: test-unit-rails
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - ">="
|
@@ -109,7 +123,7 @@ dependencies:
|
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: mutex_m
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - ">="
|
@@ -139,19 +153,15 @@ files:
|
|
139
153
|
- bin/console
|
140
154
|
- bin/setup
|
141
155
|
- gemfiles/benchmark.gemfile
|
142
|
-
- gemfiles/
|
143
|
-
- gemfiles/
|
144
|
-
- gemfiles/
|
145
|
-
- gemfiles/rails_52.gemfile
|
146
|
-
- gemfiles/rails_60.gemfile
|
147
|
-
- gemfiles/rails_61.gemfile
|
156
|
+
- gemfiles/rails_7.1.gemfile
|
157
|
+
- gemfiles/rails_7.2.gemfile
|
158
|
+
- gemfiles/rails_8.0.gemfile
|
148
159
|
- gemfiles/rails_edge.gemfile
|
149
160
|
- lib/generators/rails/scaffold_controller_generator.rb
|
150
161
|
- lib/generators/rails/simple_json_generator.rb
|
151
162
|
- lib/generators/rails/templates/index.simple_json.rb
|
152
163
|
- lib/generators/rails/templates/show.simple_json.rb
|
153
164
|
- lib/simple_json.rb
|
154
|
-
- lib/simple_json/json.rb
|
155
165
|
- lib/simple_json/migratable.rb
|
156
166
|
- lib/simple_json/railtie.rb
|
157
167
|
- lib/simple_json/simple_json_renderable.rb
|
@@ -164,7 +174,7 @@ homepage: https://github.com/aktsk/simple_json
|
|
164
174
|
licenses:
|
165
175
|
- MIT
|
166
176
|
metadata: {}
|
167
|
-
post_install_message:
|
177
|
+
post_install_message:
|
168
178
|
rdoc_options: []
|
169
179
|
require_paths:
|
170
180
|
- lib
|
@@ -172,15 +182,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
182
|
requirements:
|
173
183
|
- - ">="
|
174
184
|
- !ruby/object:Gem::Version
|
175
|
-
version: 2.
|
185
|
+
version: 3.2.0
|
176
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
187
|
requirements:
|
178
188
|
- - ">="
|
179
189
|
- !ruby/object:Gem::Version
|
180
190
|
version: '0'
|
181
191
|
requirements: []
|
182
|
-
rubygems_version: 3.
|
183
|
-
signing_key:
|
192
|
+
rubygems_version: 3.5.11
|
193
|
+
signing_key:
|
184
194
|
specification_version: 4
|
185
195
|
summary: Faster and simpler Jbuilder alternative
|
186
196
|
test_files: []
|
data/gemfiles/rails_42.gemfile
DELETED
data/gemfiles/rails_50.gemfile
DELETED
data/gemfiles/rails_52.gemfile
DELETED
data/lib/simple_json/json.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'oj'
|
4
|
-
|
5
|
-
module SimpleJson
|
6
|
-
module Json
|
7
|
-
class Oj
|
8
|
-
def self.encode(json)
|
9
|
-
::Oj.dump(json, mode: :rails)
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.decode(json_string)
|
13
|
-
::Oj.load(json_string, mode: :rails)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|