jsend_wrapper-rails 0.1.3 → 0.2.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
  SHA1:
3
- metadata.gz: f2aec426a71e880af5186aed2415ca18b84577f7
4
- data.tar.gz: 5fe8e2310b6ea9d72d6a5f9ab8207a6c26fc5354
3
+ metadata.gz: 321056c9ec61f7c53a5094e3c95a9871858dbc41
4
+ data.tar.gz: 36d9de6dd83e21e85ff64fa77496abbcd9496ab3
5
5
  SHA512:
6
- metadata.gz: 0c91c8f286be617c60ee2ebbbac8f54871fa0242f90cc65a312ee01a040531d1b5de50f175540e20863e6cd085ace5b7c5f8f4e25953d13259a552fc46efd88e
7
- data.tar.gz: ad1c3f2f9478f71bfe46e81f350378128ebe759d58216ab1b604e2a683c0afe3fe1371e93dd1683488ff7a1cb2ce39c797ce2246cbda83f301b5a318a71e50e4
6
+ metadata.gz: f97f06fa6e474260d8189bf7c97ae326dc4614d2e64d5d2d51a3545c57b5d9e6fbd8c35e8969ede4d59d29795eee05018cc720620cc5bfdac9fdd535f7f1caab
7
+ data.tar.gz: 3d03152cc8c4e418e43cc5d6f0d67659f2ff15f783c163f9fbba4f337ae736568a92b4b367ae6e6cbd34e296473431aee80197decc1ccf9120f7be7fa858575a
data/README.md CHANGED
@@ -81,7 +81,7 @@ json.year 1999
81
81
 
82
82
  #### Handling Errors
83
83
 
84
- You can use `rescue_from` to automatically handle errors:
84
+ You can use `rescue_from` to automatically handle errors:
85
85
 
86
86
  ```ruby
87
87
  rescue_from ActiveRecord::RecordNotFound do
@@ -102,7 +102,10 @@ end
102
102
  }
103
103
  ```
104
104
 
105
- ## JSend Spec
105
+ ## JSend Specification
106
+
107
+ *This section is copied from [omniti.com](http://labs.omniti.com/labs/jsend)
108
+ under via a modified BSD License (see below).*
106
109
 
107
110
  * **What?** - Put simply, JSend is a specification that lays down some rules
108
111
  for how [JSON](http://json.org) responses from web servers should be
@@ -118,7 +121,7 @@ end
118
121
  of responses. Also, this helps promote happiness and unity between backend
119
122
  developers and frontend designers, as everyone can come to expect a common
120
123
  approach to interacting with one another.
121
- * **Hold on now, aren't there already specs for this kind of thing?** -
124
+ * **Hold on now, aren't there already specs for this kind of thing?** -
122
125
  Well... no. While there are a few handy specifications for dealing with JSON
123
126
  data, most notably [Douglas Crockford](http://www.crockford.com/)'s
124
127
  [JSONRequest](http://www.json.org/JSONRequest.html) proposal, there's nothing
@@ -171,7 +174,7 @@ required and optional keys for each type:
171
174
  <tr>
172
175
  <td>fail</td>
173
176
  <td>
174
- There was a problem with the data submitted, or some pre-condition of
177
+ There was a problem with the data submitted, or some pre-condition of
175
178
  the API call wasn't satisfied.
176
179
  </td>
177
180
  <td>status, message</td>
@@ -180,7 +183,7 @@ required and optional keys for each type:
180
183
  <tr>
181
184
  <td>error</td>
182
185
  <td>
183
- An error occurred in processing the request, i.e. an exception was
186
+ An error occurred in processing the request, i.e. an exception was
184
187
  thrown.
185
188
  </td>
186
189
  <td>status, message</td>
@@ -219,7 +222,7 @@ simple envelope for the results, using the {{{data}}} key, as in the following:
219
222
  "status": "success",
220
223
  "data": {
221
224
  "id": 2,
222
- "title": "Another blog post",
225
+ "title": "Another blog post",
223
226
  "body": "More content"
224
227
  }
225
228
  }
@@ -263,8 +266,8 @@ Required keys:
263
266
  **`GET /posts.json`**:
264
267
  ```json
265
268
  {
266
- "status" : "error",
267
- "message" : "A title is required"
269
+ "status": "error",
270
+ "message": "A title is required"
268
271
  }
269
272
  ```
270
273
 
@@ -277,7 +280,7 @@ Optional keys:
277
280
  * code: A numeric code corresponding to the error, if applicable
278
281
  * data: A generic container for any other information about the error, i.e. the
279
282
  conditions that caused the error, stack traces, etc.
280
-
283
+
281
284
  ### Whither HTTP?
282
285
 
283
286
  But wait, you ask, doesn't HTTP already provide a way to communicate response
@@ -20,7 +20,7 @@ module JsendWrapper
20
20
  class Railtie < ::Rails::Railtie
21
21
  initializer 'jsend_wrapper-rails.initialization' do
22
22
  if JsendWrapper::Rails.jbuilder_available?
23
- JsendWrapper::Rails.install_template
23
+ JsendWrapper::Rails.install_template_handler
24
24
  end
25
25
  JsendWrapper::Rails.install_render_option
26
26
  end
@@ -32,14 +32,16 @@ module JsendWrapper
32
32
  require 'jbuilder'
33
33
  true
34
34
  rescue LoadError
35
- STDERR.puts 'WARN: Please include the "jbuilder" gem for .jsend templates'
35
+ $stderr.puts 'WARN: Please include the "jbuilder" gem for .jsend templates'
36
36
  false
37
37
  end
38
38
 
39
39
  # Install a "template handler" for .jsend view files. These files will be
40
40
  # processed with {Jbuilder}, just like .jbuilder view files, but the result
41
41
  # will be wrapped in a "success" JSend wrapper.
42
- def self.install_template
42
+ def self.install_template_handler
43
+ require 'jsend_wrapper/rails/template_handler'
44
+
43
45
  ActionView::Template.register_template_handler \
44
46
  :jsend, JsendWrapper::Rails::TemplateHandler
45
47
  end
@@ -47,7 +49,7 @@ module JsendWrapper
47
49
 
48
50
  # Adds the "jsend:" option to {ActiveController::Base#render}
49
51
  def self.install_render_option
50
- require_relative 'render_option'
52
+ require 'jsend_wrapper/rails/render_option'
51
53
 
52
54
  ActionController::Renderers.add :jsend do |value, _|
53
55
  self.content_type ||= Mime::JSON
@@ -13,7 +13,8 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative '../renderers'
16
+ require 'active_support/core_ext/hash/slice'
17
+ require 'jsend_wrapper/renderers'
17
18
 
18
19
  module JsendWrapper
19
20
  # Parses the "render jsend: {...}" command. Valid forms:
@@ -22,7 +22,7 @@ module JsendWrapper
22
22
 
23
23
  <<-RUBY
24
24
  content = instance_eval #{json.inspect}
25
- JsendWrapper::Handlers::Success.new(self).render content
25
+ JsendWrapper::Rails::TemplateHandler.new(self).render content
26
26
  RUBY
27
27
  end
28
28
 
@@ -13,13 +13,13 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderer'
16
+ require 'jsend_wrapper/renderers/renderer'
17
17
 
18
18
  module JsendWrapper
19
19
  # Wraps the given message in a JSend Error. JSend Errors have two required
20
20
  # elements (status, message) and two optional elements (code, data).
21
21
  class ErrorRenderer < Renderer
22
- attr_accessor :message, :has_code, :code, :has_data, :data
22
+ attr_reader :message, :has_code, :code, :has_data, :data
23
23
 
24
24
  alias_method :code?, :has_code
25
25
  alias_method :data?, :has_data
@@ -30,18 +30,18 @@ module JsendWrapper
30
30
  #@option optional [Object] :data a generic container for any other
31
31
  # information about the error
32
32
  def initialize(message, optional)
33
- self.message = message.to_s
34
- self.has_code = optional.key? :code
35
- self.has_data = optional.key? :data
33
+ @message = message.to_s
34
+ @has_code = optional.key? :code
35
+ @has_data = optional.key? :data
36
36
 
37
- self.code = parse_code optional[:code] if code?
38
- self.data = optional[:data] if data?
37
+ @code = parse_code optional[:code] if code?
38
+ @data = optional[:data] if data?
39
39
  end
40
40
 
41
41
 
42
42
  #@return [String] the rendered JSON
43
43
  def call
44
- %[{"status":"error","message":#{message.to_json}#{optional}}]
44
+ %[{"status":"error","message":#{message.inspect}#{optional}}]
45
45
  end
46
46
 
47
47
 
@@ -49,11 +49,8 @@ module JsendWrapper
49
49
 
50
50
 
51
51
  def parse_code(code)
52
- if code.respond_to? :to_i
53
- code.to_i
54
- else
55
- raise '"code" must respond to #to_i'
56
- end
52
+ raise '"code" must respond to #to_i' unless code.respond_to? :to_i
53
+ code.to_i
57
54
  end
58
55
 
59
56
 
@@ -13,16 +13,16 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderer'
16
+ require 'jsend_wrapper/renderers/renderer'
17
17
 
18
18
  module JsendWrapper
19
19
  # Wraps the given message in a JSend Failure. JSend Failures have two required
20
20
  # elements (status, data).
21
21
  class FailRenderer < Renderer
22
- attr_accessor :data
22
+ attr_reader :data
23
23
 
24
- def initialize(obj)
25
- self.data = obj
24
+ def initialize(data)
25
+ @data = data
26
26
  end
27
27
 
28
28
  def call
@@ -13,6 +13,8 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ require 'json'
17
+
16
18
  module JsendWrapper
17
19
  class Renderer
18
20
  protected
@@ -23,7 +25,7 @@ module JsendWrapper
23
25
  elsif obj.nil?
24
26
  'null'
25
27
  else
26
- obj.to_s.to_json
28
+ JSON.dump obj
27
29
  end
28
30
  end
29
31
  end
@@ -13,16 +13,16 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderer'
16
+ require 'jsend_wrapper/renderers/renderer'
17
17
 
18
18
  module JsendWrapper
19
19
  # Wraps the given message in a JSend Success. JSend Successs have two required
20
20
  # elements (status, data).
21
21
  class SuccessRenderer < Renderer
22
- attr_accessor :data
22
+ attr_reader :data
23
23
 
24
- def initialize(obj)
25
- self.data = obj
24
+ def initialize(data)
25
+ @data = data
26
26
  end
27
27
 
28
28
  def call
@@ -13,6 +13,6 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderers/success_renderer'
17
- require_relative 'renderers/fail_renderer'
18
- require_relative 'renderers/error_renderer'
16
+ require 'jsend_wrapper/renderers/success_renderer'
17
+ require 'jsend_wrapper/renderers/fail_renderer'
18
+ require 'jsend_wrapper/renderers/error_renderer'
@@ -13,8 +13,8 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- JsendWrapper = Module.new
17
-
18
16
  if defined? Rails
19
- require_relative 'jsend_wrapper/rails/railtie'
17
+ require 'jsend_wrapper/rails/railtie'
18
+ else
19
+ $stderr.puts 'WARN: Rails is not defined! jsend_wrapper-rails cannot load.'
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsend_wrapper-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Sangster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-21 00:00:00.000000000 Z
11
+ date: 2014-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry