coaster 0.0.2 → 0.0.3

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: 109c0d535c90fff69341b21151d50f1f1fd98e5a
4
- data.tar.gz: 80258772bb07341f0d9f2689a1da836c100c8d14
3
+ metadata.gz: 1c0875c0a591628d41eb57139f27f95434d8a007
4
+ data.tar.gz: f1d04dde597d9b223940aedef18d435ba0c7f5e6
5
5
  SHA512:
6
- metadata.gz: 9b21238d86071189b72fe88181bbfb449ceadea509bdefd389d08e91e61b4b1c0dc6d0ded7d71277f8c117a34883625437add893a1f6b5f6c85b3f4137d68e63
7
- data.tar.gz: e475df00ff8751a6bc14e37653a69cf646f0e70bc2e3a4e9125a0f587fbc5868c2c4065d8b2ec1c7942cd4a1d8cc3572a6a4b551421018779ec6402aaa865979
6
+ metadata.gz: e8c6027c675c4df5964f6693762f684fe65d0049862b9851fdd0387bde053b8198899f64e0c428cb39d62c07dc68498e2f813c6aae636259608de2c9bd2e28dd
7
+ data.tar.gz: 5c1125644b1a374a1d13ff5f4f5c9e4d5025b9e463d3955a9b5f364c2686fdcfa36755124ee7a4116e756f0ecd0df1563aa1198702150f2007723710f5c7b64b
data/README.md CHANGED
@@ -1,2 +1,88 @@
1
1
  # Coaster
2
2
 
3
+ ## Object Translation
4
+
5
+ Translate by object class name.
6
+ ```ruby
7
+ # Translation key
8
+ Coupon._translate #=> en.class.Coupon.self
9
+ Coupon::Discount._translate #=> en.class.Coupon.Discount.self
10
+ Coupon._translate('.title') #=> en.class.Coupon.title
11
+ Coupon._translate('root') #=> en.root
12
+ ```
13
+
14
+ Pass translation params.
15
+ ```ruby
16
+ class Coupon
17
+ class << self
18
+ def _translation_params
19
+ {name: 'Buzz'}
20
+ end
21
+ end
22
+ end
23
+
24
+ Coupon._translate #=> I18n.t('en.class.Coupon.self', {name: 'Buzz'})
25
+ ```
26
+
27
+ Inheritance fallback.
28
+ ```ruby
29
+ class Order
30
+ end
31
+
32
+ class CreditCard < Order
33
+ end
34
+
35
+ # in en.yml only defined Order translation.
36
+ # use superclass _translate
37
+ CreditCard._translate #=> I18n.t('en.class.CreditCard.self') not exists
38
+ #=> I18n.t('en.class.Order.self') returned
39
+ ```
40
+
41
+ instance 에서도 사용할 수 있다.
42
+ ```ruby
43
+ Foo::Bar.new._translate #=> return translation 'class.Foo.Bar.self'
44
+ Foo::Bar.new._translate('.title') #=> return translation 'class.Foo.Bar.title'
45
+ Foo::Bar.new._translate('title') #=> return translation 'title'
46
+ Foo::Bar.new._translate(:force) #=> ignore 'message' even if message exists
47
+ ```
48
+
49
+ 그런데 다른점은 instance에 message 메서드가 존재할 경우 다음과 같이 message를 활용한다.
50
+ ```ruby
51
+ error = Order::Error.new('error message')
52
+ error._translate(:force) #=> "error message"
53
+ ```
54
+
55
+
56
+ ## StandardError features
57
+
58
+ 아래는 동일하다.
59
+ ```ruby
60
+ raise Order::Error, 'order error occurred'
61
+ raise Order::Error, {message: 'order error occurred'}
62
+ raise Order::Error, {msg: 'order error occurred'}
63
+ raise Order::Error, {m: 'order error occurred'}
64
+ ```
65
+
66
+ 에러에 추가로 attribute를 추가하고 싶다면 Hash에 아무거나 넣으면 된다.
67
+ ```ruby
68
+ ex = catch { raise Order::Error, {m: 'message', order: order} }
69
+ ex.attributes[:order] #=> order instance
70
+ ```
71
+
72
+ Hash로 전달되는 특수한 attribute가 있다.
73
+
74
+ 1. desc, description: `ex.description`으로 꺼낼 수 있다. `ex.message`는 사용자 친화적이지
75
+ 않은 메시지라서 사용자 친화적인 메시지를 넣으려면 description을 쓰면 된다. description이 없으면
76
+ message를 리턴한다.
77
+ 1. obj, object: `ex.object`로 꺼낼수 있다.
78
+ 1. http_status: `ex.http_status`로 꺼낼수 있다. 기본값은 Error Class에서 지정된 상수값.
79
+
80
+
81
+ 그 외에 error instance variable로 등록되는 attribute가 있다.
82
+ 1. tags: [ActiveSupport::TaggedLogging|http://api.rubyonrails.org/classes/ActiveSupport/TaggedLogging.html]에 사용된다.
83
+ 1. level: debug, info 등등의 로깅 레벨
84
+ 1. tkey: Object Translation 에서 사용된다. 기본값은 '.self'와 동일하다.
85
+
86
+ ## StandardError raven extenstion
87
+
88
+ ...
@@ -40,7 +40,7 @@ class Object
40
40
  end
41
41
 
42
42
  if key_class.superclass == Object || key_class == Object
43
- options[:message] || options['message'] ||
43
+ options[:description] ||
44
44
  (options[:original_missing] && options[:original_missing].message) ||
45
45
  result.message
46
46
  else
@@ -66,9 +66,11 @@ class Object
66
66
  options = args.last.is_a?(Hash) ? args.pop.dup : {}
67
67
  key = args.shift || (respond_to?(:tkey) ? tkey : nil)
68
68
 
69
- if !key.is_a?(String) && key != :force
70
- if respond_to?(:message) && message.present? && message != 'false' && message != self.class.name
71
- return message
69
+ if respond_to?(:description) && description.present? && description != 'false' && description != self.class.name
70
+ if !key.is_a?(String) && key != :force
71
+ return description
72
+ else
73
+ options.merge!(description: description)
72
74
  end
73
75
  end
74
76
 
@@ -1,3 +1,3 @@
1
1
  module Coaster
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - buzz jung