coaster 0.0.2 → 0.0.3

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