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