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 +4 -4
- data/README.md +86 -0
- data/lib/coaster/core_ext/object_translation.rb +6 -4
- data/lib/coaster/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c0875c0a591628d41eb57139f27f95434d8a007
|
4
|
+
data.tar.gz: f1d04dde597d9b223940aedef18d435ba0c7f5e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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[:
|
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
|
70
|
-
if
|
71
|
-
return
|
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
|
|
data/lib/coaster/version.rb
CHANGED