pg_jbuilder 0.0.1

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 (68) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +4 -0
  5. data/Guardfile +10 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +468 -0
  8. data/Rakefile +7 -0
  9. data/config/database.yml +3 -0
  10. data/lib/pg_jbuilder.rb +108 -0
  11. data/lib/pg_jbuilder/railtie.rb +44 -0
  12. data/lib/pg_jbuilder/version.rb +3 -0
  13. data/pg_jbuilder.gemspec +30 -0
  14. data/queries/test1.sql +1 -0
  15. data/spec/dummy/README.rdoc +28 -0
  16. data/spec/dummy/Rakefile +6 -0
  17. data/spec/dummy/app/assets/images/.keep +0 -0
  18. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  19. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  20. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  21. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  22. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  23. data/spec/dummy/app/mailers/.keep +0 -0
  24. data/spec/dummy/app/models/.keep +0 -0
  25. data/spec/dummy/app/models/concerns/.keep +0 -0
  26. data/spec/dummy/app/models/test_model.rb +2 -0
  27. data/spec/dummy/app/queries/test.sql +1 -0
  28. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  29. data/spec/dummy/bin/bundle +3 -0
  30. data/spec/dummy/bin/rails +4 -0
  31. data/spec/dummy/bin/rake +4 -0
  32. data/spec/dummy/bin/setup +29 -0
  33. data/spec/dummy/config.ru +4 -0
  34. data/spec/dummy/config/application.rb +26 -0
  35. data/spec/dummy/config/boot.rb +5 -0
  36. data/spec/dummy/config/database.yml +26 -0
  37. data/spec/dummy/config/environment.rb +5 -0
  38. data/spec/dummy/config/environments/development.rb +41 -0
  39. data/spec/dummy/config/environments/production.rb +79 -0
  40. data/spec/dummy/config/environments/test.rb +42 -0
  41. data/spec/dummy/config/initializers/assets.rb +11 -0
  42. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  43. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  44. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  45. data/spec/dummy/config/initializers/inflections.rb +16 -0
  46. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  47. data/spec/dummy/config/initializers/session_store.rb +3 -0
  48. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  49. data/spec/dummy/config/locales/en.yml +23 -0
  50. data/spec/dummy/config/routes.rb +56 -0
  51. data/spec/dummy/config/secrets.yml +22 -0
  52. data/spec/dummy/db/development.sqlite3 +0 -0
  53. data/spec/dummy/db/migrate/20150210004140_add_test_model.rb +11 -0
  54. data/spec/dummy/db/schema.rb +25 -0
  55. data/spec/dummy/db/test.sqlite3 +0 -0
  56. data/spec/dummy/lib/assets/.keep +0 -0
  57. data/spec/dummy/log/.keep +0 -0
  58. data/spec/dummy/log/development.log +303 -0
  59. data/spec/dummy/log/test.log +354 -0
  60. data/spec/dummy/public/404.html +67 -0
  61. data/spec/dummy/public/422.html +67 -0
  62. data/spec/dummy/public/500.html +66 -0
  63. data/spec/dummy/public/favicon.ico +0 -0
  64. data/spec/pg_jbuilder/pg_jbuilder_spec.rb +182 -0
  65. data/spec/pg_jbuilder/railtie_spec.rb +88 -0
  66. data/spec/queries/test2.sql +1 -0
  67. data/spec/spec_helper.rb +29 -0
  68. metadata +298 -0
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,182 @@
1
+ require 'spec_helper'
2
+
3
+ describe PgJbuilder, without_rails: true do
4
+ describe '.connection' do
5
+ subject { PgJbuilder.connection }
6
+ it 'saves the connection' do
7
+ PgJbuilder.connection = 'test'
8
+ is_expected.to eq('test')
9
+ end
10
+
11
+ it 'executes a lambda' do
12
+ PgJbuilder.connection = lambda{'lambda_test'}
13
+ is_expected.to eq('lambda_test')
14
+ end
15
+ end
16
+
17
+ describe '.render_array' do
18
+ subject { PgJbuilder.render_array('template',defined?(variables) ? variables : {}) }
19
+ it 'outputs as json object' do
20
+ template = 'SELECT 1'
21
+ expect(PgJbuilder).to receive(:render).
22
+ and_return(template)
23
+ result = "SELECT COALESCE(array_to_json(array_agg(row_to_json(array_row))),'[]'::json)\nFROM (\n#{template}\n) array_row"
24
+ is_expected.to eq(result)
25
+ end
26
+ end
27
+
28
+ describe '.render_object' do
29
+ before :each do
30
+ allow(PgJbuilder).to receive(:get_query_contents).
31
+ and_return(template)
32
+ end
33
+ subject { PgJbuilder.render_object('template',defined?(variables) ? variables : {}) }
34
+ let(:template) { "SELECT 1" }
35
+ it 'outputs as json object' do
36
+ result = "SELECT COALESCE(row_to_json(object_row),'{}'::json)\nFROM (\n#{template}\n) object_row"
37
+ is_expected.to eq(result)
38
+ end
39
+ end
40
+
41
+ describe '.render' do
42
+ it 'returns the contents of the query file' do
43
+ query_name = 'test'
44
+ contents = "test query #{rand}"
45
+ allow(PgJbuilder).to receive(:get_query_contents).
46
+ with(query_name).and_return(contents)
47
+ res = PgJbuilder.render query_name
48
+ expect(res).to eq(contents)
49
+ end
50
+
51
+ it 'reads a query in queries directory' do
52
+ query_path = File.join(File.dirname(__FILE__),'..','..','queries','test1.sql')
53
+ res = PgJbuilder.render('test1')
54
+ expect(res).to eq(File.read(query_path))
55
+ end
56
+
57
+ it 'reads a query from configured directories' do
58
+ path = File.join(File.dirname(__FILE__),'..','queries')
59
+ PgJbuilder.paths.unshift path
60
+ res = PgJbuilder.render('test2')
61
+ query_path = File.join(path,'test2.sql')
62
+ expect(res).to eq(File.read(query_path))
63
+ end
64
+
65
+ context 'with a template that doesnt exist' do
66
+ subject { PgJbuilder.render('template_does_not_exist') }
67
+ it { expect{subject}.to raise_error(PgJbuilder::TemplateNotFound) }
68
+ end
69
+
70
+ context 'with a template' do
71
+ before :each do
72
+ allow(PgJbuilder).to receive(:get_query_contents).
73
+ and_return(template)
74
+ end
75
+ subject { PgJbuilder.render('template',defined?(variables) ? variables : {}) }
76
+ context 'with variables' do
77
+ let(:template) {"{{variable1}},{{variable2}}"}
78
+ let(:variables) {
79
+ {variable1: 'value_1',
80
+ variable2: 'value_2'}
81
+ }
82
+ it 'substitutes the variables' do
83
+ is_expected.to eq("value_1,value_2")
84
+ end
85
+
86
+ context 'that have HTML in them' do
87
+ let(:variables) {
88
+ {variable1: '<html>',
89
+ variable2: '<body>'}
90
+ }
91
+ it 'doesn\'t escape the HTML' do
92
+ is_expected.to eq("<html>,<body>")
93
+ end
94
+ end
95
+ end # that has variables
96
+
97
+ describe 'include helper' do
98
+ let(:template) {"Included: {{include 'included_template'}}"}
99
+ let(:included_template) {"Included Template Contents"}
100
+ before :each do
101
+ allow(PgJbuilder).to receive(:get_query_contents).
102
+ with('included_template').and_return(included_template)
103
+ end
104
+ it 'includes the included template' do
105
+ is_expected.to eq("Included: Included Template Contents")
106
+ end
107
+
108
+ context 'with variables' do
109
+ let(:variables) {
110
+ {variable1: 'value_1',
111
+ variable2: 'value_2'}
112
+ }
113
+ let(:included_template) {"Included Template {{variable1}},{{variable2}}"}
114
+ it 'the included template inherits the variables' do
115
+ is_expected.to eq("Included: Included Template value_1,value_2")
116
+ end
117
+
118
+ context 'with variables in the include' do
119
+ let(:template) {"Included: {{include 'included_template' variable3='value_3' variable4='value_4'}}"}
120
+ let(:included_template) {"Included Template {{variable1}},{{variable2}},{{variable3}},{{variable4}}"}
121
+ it 'the included template has the variables' do
122
+ is_expected.to eq("Included: Included Template value_1,value_2,value_3,value_4")
123
+ end
124
+ end
125
+ end # with include helper
126
+ end
127
+
128
+ describe 'quote helper' do
129
+ let(:template) { 'Quoted: {{quote variable1}}' }
130
+ let(:variables) do
131
+ {variable1: 'String'}
132
+ end
133
+ it 'quotes a string' do
134
+ is_expected.to eq("Quoted: 'String'")
135
+ end
136
+ end
137
+
138
+ describe 'object helper' do
139
+ let(:template) { "Object: {{#object}}\nObject Test\n{{/object}}" }
140
+ it 'renders object sql' do
141
+ is_expected.to eq("Object: (SELECT COALESCE(row_to_json(object_row),'{}'::json) FROM (\nObject Test\n)object_row)")
142
+ end
143
+ context 'with template name' do
144
+ let(:template) { "Object: {{object 'object_template'}}" }
145
+ let(:object_template) do
146
+ "Object Template"
147
+ end
148
+ before :each do
149
+ allow(PgJbuilder).to receive(:get_query_contents).
150
+ with('object_template').and_return(object_template)
151
+ end
152
+
153
+ it 'renders object sql' do
154
+ is_expected.to eq("Object: (SELECT COALESCE(row_to_json(object_row),'{}'::json) FROM (\nObject Template\n)object_row)")
155
+ end
156
+ end
157
+ end # object helper
158
+
159
+ describe 'array helper' do
160
+ let(:template) { "Array: {{#array}}\nArray Test\n{{/array}}" }
161
+ it 'renders array sql' do
162
+ is_expected.to eq("Array: (SELECT COALESCE(array_to_json(array_agg(row_to_json(array_row))),'[]'::json) FROM (\nArray Test\n)array_row)")
163
+ end
164
+
165
+ context 'with template name' do
166
+ let(:template) { "Array: {{array 'array_template'}}" }
167
+ let(:array_template) do
168
+ "Array Template"
169
+ end
170
+ before :each do
171
+ allow(PgJbuilder).to receive(:get_query_contents).
172
+ with('array_template').and_return(array_template)
173
+ end
174
+
175
+ it 'renders array sql' do
176
+ is_expected.to eq("Array: (SELECT COALESCE(array_to_json(array_agg(row_to_json(array_row))),'[]'::json) FROM (\nArray Template\n)array_row)")
177
+ end
178
+ end
179
+ end # array helper
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,88 @@
1
+ require 'spec_helper'
2
+
3
+ describe PgJbuilder do
4
+ describe 'PgJbuilder.paths' do
5
+ subject { PgJbuilder.paths }
6
+ it { is_expected.to include(Rails.root.join('app','queries')) }
7
+ end
8
+ describe 'PgJbuilder.connection' do
9
+ subject { PgJbuilder.connection }
10
+ it { is_expected.to be_kind_of(ActiveRecord::ConnectionAdapters::AbstractAdapter) }
11
+ end
12
+ context 'TestModel' do
13
+ let(:variables) { {
14
+ variable1: 1,
15
+ variable2: 2
16
+ } }
17
+ describe '.select_value' do
18
+ subject { TestModel }
19
+ it { is_expected.to respond_to(:select_value) }
20
+ it 'calls connection.select_value with query' do
21
+ expect(PgJbuilder).to receive(:render).
22
+ with('query_name', variables).and_return('TEST')
23
+ expect(TestModel.connection).to receive(:select_value).
24
+ with('TEST')
25
+ TestModel.select_value 'query_name', variables
26
+ end
27
+ end
28
+ describe '.select_array' do
29
+ subject { TestModel }
30
+ it { is_expected.to respond_to(:select_array) }
31
+ it 'calls PgJbuilder.render_array' do
32
+ expect(PgJbuilder).to receive(:render_array).
33
+ with('query_name', variables)
34
+ expect(TestModel.connection).to receive(:select_value)
35
+ TestModel.select_array 'query_name', variables
36
+ end
37
+ end
38
+
39
+ describe '.select_object' do
40
+ subject { TestModel }
41
+ it { is_expected.to respond_to(:select_object) }
42
+ it 'calls PgJbuilder.render_object' do
43
+ expect(PgJbuilder).to receive(:render_object).
44
+ with('query_name', variables)
45
+ expect(TestModel.connection).to receive(:select_value)
46
+ TestModel.select_object 'query_name', variables
47
+ end
48
+ end
49
+
50
+ describe "#select_value" do
51
+ subject(:model) { TestModel.new }
52
+ it { is_expected.to respond_to(:select_value) }
53
+
54
+ it 'calls PgJbuilder.render' do
55
+ expect(PgJbuilder).to receive(:render).
56
+ with('query_name', variables).
57
+ and_return('TEST')
58
+ expect(TestModel.connection).to receive(:select_value).
59
+ with('TEST')
60
+ TestModel.select_value 'query_name', variables
61
+ end
62
+ end
63
+ describe '#select_array' do
64
+ subject(:model) { TestModel.new }
65
+ it { is_expected.to respond_to(:select_array) }
66
+
67
+ it 'calls PgJbuilder.render_array' do
68
+ expect(PgJbuilder).to receive(:render_array).
69
+ with('query_name', variables)
70
+ expect(TestModel.connection).to receive(:select_value)
71
+ model.select_array 'query_name', variables
72
+ end
73
+ end
74
+
75
+ describe '#select_object' do
76
+ subject(:model) { TestModel.new }
77
+ it { is_expected.to respond_to(:select_object) }
78
+
79
+ it 'calls PgJbuilder.render_object' do
80
+ expect(PgJbuilder).to receive(:render_object).
81
+ with('query_name', variables)
82
+ expect(TestModel.connection).to receive(:select_value)
83
+ model.select_object 'query_name', variables
84
+ end
85
+ end
86
+ end
87
+ end
88
+
@@ -0,0 +1 @@
1
+ SELECT 2 as two
@@ -0,0 +1,29 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+ require File.expand_path("../dummy/config/environment", __FILE__)
4
+ require "rails/test_help"
5
+
6
+ require 'pg_jbuilder'
7
+
8
+ module PgJbuilder::TestHelpers
9
+ class NonRailsTestDb < ActiveRecord::Base; end
10
+
11
+ def self.included mod
12
+ super
13
+ if mod.respond_to?(:before)
14
+ database_config = File.join(File.dirname(__FILE__),'..','config','database.yml')
15
+ config = YAML.load(File.read(database_config))
16
+ mod.around :each, without_rails: true do |example|
17
+ old_value = PgJbuilder.connection
18
+ pool = NonRailsTestDb.establish_connection config
19
+ PgJbuilder.connection = lambda { pool.connection }
20
+ example.call
21
+ PgJbuilder.connection = old_value
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ config.include PgJbuilder::TestHelpers
29
+ end
metadata ADDED
@@ -0,0 +1,298 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pg_jbuilder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - tye
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: handlebars
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.6'
20
+ - - '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.6.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.6'
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 0.6.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: activerecord
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: 3.0.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 3.0.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: pg
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: bundler
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: '1.6'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: '1.6'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rake
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ~>
80
+ - !ruby/object:Gem::Version
81
+ version: '10.4'
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: 10.4.2
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: '10.4'
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 10.4.2
95
+ - !ruby/object:Gem::Dependency
96
+ name: rspec
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '3.1'
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: 3.1.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: '3.1'
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: 3.1.0
115
+ - !ruby/object:Gem::Dependency
116
+ name: rails
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ~>
120
+ - !ruby/object:Gem::Version
121
+ version: 4.2.0
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ~>
127
+ - !ruby/object:Gem::Version
128
+ version: 4.2.0
129
+ - !ruby/object:Gem::Dependency
130
+ name: sqlite3
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ description: pg_jbuilder is a tool to dump database queries directly to a JSON object
144
+ or array. It uses PostgreSQL's JSON functions ([array_to_json and row_to_json](http://www.postgresql.org/docs/9.3/static/functions-json.html))
145
+ to serialize the JSON completely bypassing ActiveRecord/Arel. This gives a large
146
+ speed boost compared to serializing the JSON inside of Ruby/Rails. It is perfect
147
+ for creating JSON APIs with very low response times.
148
+ email:
149
+ - tye@tye.ca
150
+ executables: []
151
+ extensions: []
152
+ extra_rdoc_files: []
153
+ files:
154
+ - .gitignore
155
+ - .rspec
156
+ - Gemfile
157
+ - Guardfile
158
+ - LICENSE.txt
159
+ - README.md
160
+ - Rakefile
161
+ - config/database.yml
162
+ - lib/pg_jbuilder.rb
163
+ - lib/pg_jbuilder/railtie.rb
164
+ - lib/pg_jbuilder/version.rb
165
+ - pg_jbuilder.gemspec
166
+ - queries/test1.sql
167
+ - spec/dummy/README.rdoc
168
+ - spec/dummy/Rakefile
169
+ - spec/dummy/app/assets/images/.keep
170
+ - spec/dummy/app/assets/javascripts/application.js
171
+ - spec/dummy/app/assets/stylesheets/application.css
172
+ - spec/dummy/app/controllers/application_controller.rb
173
+ - spec/dummy/app/controllers/concerns/.keep
174
+ - spec/dummy/app/helpers/application_helper.rb
175
+ - spec/dummy/app/mailers/.keep
176
+ - spec/dummy/app/models/.keep
177
+ - spec/dummy/app/models/concerns/.keep
178
+ - spec/dummy/app/models/test_model.rb
179
+ - spec/dummy/app/queries/test.sql
180
+ - spec/dummy/app/views/layouts/application.html.erb
181
+ - spec/dummy/bin/bundle
182
+ - spec/dummy/bin/rails
183
+ - spec/dummy/bin/rake
184
+ - spec/dummy/bin/setup
185
+ - spec/dummy/config.ru
186
+ - spec/dummy/config/application.rb
187
+ - spec/dummy/config/boot.rb
188
+ - spec/dummy/config/database.yml
189
+ - spec/dummy/config/environment.rb
190
+ - spec/dummy/config/environments/development.rb
191
+ - spec/dummy/config/environments/production.rb
192
+ - spec/dummy/config/environments/test.rb
193
+ - spec/dummy/config/initializers/assets.rb
194
+ - spec/dummy/config/initializers/backtrace_silencers.rb
195
+ - spec/dummy/config/initializers/cookies_serializer.rb
196
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
197
+ - spec/dummy/config/initializers/inflections.rb
198
+ - spec/dummy/config/initializers/mime_types.rb
199
+ - spec/dummy/config/initializers/session_store.rb
200
+ - spec/dummy/config/initializers/wrap_parameters.rb
201
+ - spec/dummy/config/locales/en.yml
202
+ - spec/dummy/config/routes.rb
203
+ - spec/dummy/config/secrets.yml
204
+ - spec/dummy/db/development.sqlite3
205
+ - spec/dummy/db/migrate/20150210004140_add_test_model.rb
206
+ - spec/dummy/db/schema.rb
207
+ - spec/dummy/db/test.sqlite3
208
+ - spec/dummy/lib/assets/.keep
209
+ - spec/dummy/log/.keep
210
+ - spec/dummy/log/development.log
211
+ - spec/dummy/log/test.log
212
+ - spec/dummy/public/404.html
213
+ - spec/dummy/public/422.html
214
+ - spec/dummy/public/500.html
215
+ - spec/dummy/public/favicon.ico
216
+ - spec/pg_jbuilder/pg_jbuilder_spec.rb
217
+ - spec/pg_jbuilder/railtie_spec.rb
218
+ - spec/queries/test2.sql
219
+ - spec/spec_helper.rb
220
+ homepage: ''
221
+ licenses:
222
+ - MIT
223
+ metadata: {}
224
+ post_install_message:
225
+ rdoc_options: []
226
+ require_paths:
227
+ - lib
228
+ required_ruby_version: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - '>='
231
+ - !ruby/object:Gem::Version
232
+ version: '0'
233
+ required_rubygems_version: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ requirements: []
239
+ rubyforge_project:
240
+ rubygems_version: 2.2.2
241
+ signing_key:
242
+ specification_version: 4
243
+ summary: Use PostgreSQL JSON functions to dump database queries directly to a JSON
244
+ object or array.
245
+ test_files:
246
+ - spec/dummy/README.rdoc
247
+ - spec/dummy/Rakefile
248
+ - spec/dummy/app/assets/images/.keep
249
+ - spec/dummy/app/assets/javascripts/application.js
250
+ - spec/dummy/app/assets/stylesheets/application.css
251
+ - spec/dummy/app/controllers/application_controller.rb
252
+ - spec/dummy/app/controllers/concerns/.keep
253
+ - spec/dummy/app/helpers/application_helper.rb
254
+ - spec/dummy/app/mailers/.keep
255
+ - spec/dummy/app/models/.keep
256
+ - spec/dummy/app/models/concerns/.keep
257
+ - spec/dummy/app/models/test_model.rb
258
+ - spec/dummy/app/queries/test.sql
259
+ - spec/dummy/app/views/layouts/application.html.erb
260
+ - spec/dummy/bin/bundle
261
+ - spec/dummy/bin/rails
262
+ - spec/dummy/bin/rake
263
+ - spec/dummy/bin/setup
264
+ - spec/dummy/config.ru
265
+ - spec/dummy/config/application.rb
266
+ - spec/dummy/config/boot.rb
267
+ - spec/dummy/config/database.yml
268
+ - spec/dummy/config/environment.rb
269
+ - spec/dummy/config/environments/development.rb
270
+ - spec/dummy/config/environments/production.rb
271
+ - spec/dummy/config/environments/test.rb
272
+ - spec/dummy/config/initializers/assets.rb
273
+ - spec/dummy/config/initializers/backtrace_silencers.rb
274
+ - spec/dummy/config/initializers/cookies_serializer.rb
275
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
276
+ - spec/dummy/config/initializers/inflections.rb
277
+ - spec/dummy/config/initializers/mime_types.rb
278
+ - spec/dummy/config/initializers/session_store.rb
279
+ - spec/dummy/config/initializers/wrap_parameters.rb
280
+ - spec/dummy/config/locales/en.yml
281
+ - spec/dummy/config/routes.rb
282
+ - spec/dummy/config/secrets.yml
283
+ - spec/dummy/db/development.sqlite3
284
+ - spec/dummy/db/migrate/20150210004140_add_test_model.rb
285
+ - spec/dummy/db/schema.rb
286
+ - spec/dummy/db/test.sqlite3
287
+ - spec/dummy/lib/assets/.keep
288
+ - spec/dummy/log/.keep
289
+ - spec/dummy/log/development.log
290
+ - spec/dummy/log/test.log
291
+ - spec/dummy/public/404.html
292
+ - spec/dummy/public/422.html
293
+ - spec/dummy/public/500.html
294
+ - spec/dummy/public/favicon.ico
295
+ - spec/pg_jbuilder/pg_jbuilder_spec.rb
296
+ - spec/pg_jbuilder/railtie_spec.rb
297
+ - spec/queries/test2.sql
298
+ - spec/spec_helper.rb