devise_russian 0.0.1 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/README.md +116 -1
  2. data/app/assets/images/sc/.directory +3 -0
  3. data/app/assets/images/sc/64/.directory +3 -0
  4. data/app/assets/images/sc/64/afisha.png +0 -0
  5. data/app/assets/images/sc/64/blogger.png +0 -0
  6. data/app/assets/images/sc/64/blogru.png +0 -0
  7. data/app/assets/images/sc/64/delicious.png +0 -0
  8. data/app/assets/images/sc/64/deviantart.png +0 -0
  9. data/app/assets/images/sc/64/digg.png +0 -0
  10. data/app/assets/images/sc/64/facebook.png +0 -0
  11. data/app/assets/images/sc/64/feed.png +0 -0
  12. data/app/assets/images/sc/64/flickr.png +0 -0
  13. data/app/assets/images/sc/64/formazon.png +0 -0
  14. data/app/assets/images/sc/64/friendfeed.png +0 -0
  15. data/app/assets/images/sc/64/friendster.png +0 -0
  16. data/app/assets/images/sc/64/furl.png +0 -0
  17. data/app/assets/images/sc/64/gglphone.png +0 -0
  18. data/app/assets/images/sc/64/gmail.png +0 -0
  19. data/app/assets/images/sc/64/google.png +0 -0
  20. data/app/assets/images/sc/64/habrahabr.png +0 -0
  21. data/app/assets/images/sc/64/icq.png +0 -0
  22. data/app/assets/images/sc/64/lastfm.png +0 -0
  23. data/app/assets/images/sc/64/linkedin.png +0 -0
  24. data/app/assets/images/sc/64/livejournal.png +0 -0
  25. data/app/assets/images/sc/64/magnolia.png +0 -0
  26. data/app/assets/images/sc/64/mailru.png +0 -0
  27. data/app/assets/images/sc/64/memori.png +0 -0
  28. data/app/assets/images/sc/64/mixx.png +0 -0
  29. data/app/assets/images/sc/64/moikrug.png +0 -0
  30. data/app/assets/images/sc/64/myspace.png +0 -0
  31. data/app/assets/images/sc/64/netvibes.png +0 -0
  32. data/app/assets/images/sc/64/newsvine.png +0 -0
  33. data/app/assets/images/sc/64/odnoklassniki.png +0 -0
  34. data/app/assets/images/sc/64/open_id.png +0 -0
  35. data/app/assets/images/sc/64/picasa.png +0 -0
  36. data/app/assets/images/sc/64/plurk.png +0 -0
  37. data/app/assets/images/sc/64/pownce.png +0 -0
  38. data/app/assets/images/sc/64/reddit.png +0 -0
  39. data/app/assets/images/sc/64/skype.png +0 -0
  40. data/app/assets/images/sc/64/stumbleupon.png +0 -0
  41. data/app/assets/images/sc/64/technorati.png +0 -0
  42. data/app/assets/images/sc/64/twitter.png +0 -0
  43. data/app/assets/images/sc/64/vimeo.png +0 -0
  44. data/app/assets/images/sc/64/vkontakte.png +0 -0
  45. data/app/assets/images/sc/64/webshots.png +0 -0
  46. data/app/assets/images/sc/64/wordpress.png +0 -0
  47. data/app/assets/images/sc/64/yahoo.png +0 -0
  48. data/app/assets/images/sc/64/yandex.png +0 -0
  49. data/app/assets/images/sc/64/yelp.png +0 -0
  50. data/app/assets/images/sc/64/you_tube.png +0 -0
  51. data/app/assets/images/sc/brand/facebook/facebook_128.png +0 -0
  52. data/app/assets/images/sc/brand/facebook/facebook_256.png +0 -0
  53. data/app/assets/images/sc/brand/facebook/facebook_32.png +0 -0
  54. data/app/assets/images/sc/brand/facebook/facebook_64.png +0 -0
  55. data/app/assets/images/sc/brand/github/github_128.png +0 -0
  56. data/app/assets/images/sc/brand/github/github_256.png +0 -0
  57. data/app/assets/images/sc/brand/github/github_32.png +0 -0
  58. data/app/assets/images/sc/brand/github/github_64.png +0 -0
  59. data/app/assets/images/sc/brand/google/google_128 copy.png +0 -0
  60. data/app/assets/images/sc/brand/google/google_128.png +0 -0
  61. data/app/assets/images/sc/brand/google/google_256 copy.png +0 -0
  62. data/app/assets/images/sc/brand/google/google_256.png +0 -0
  63. data/app/assets/images/sc/brand/google/google_32.png +0 -0
  64. data/app/assets/images/sc/brand/google/google_64 copy.png +0 -0
  65. data/app/assets/images/sc/brand/google/google_apps_32.png +0 -0
  66. data/app/assets/images/sc/brand/google/google_apps_64.png +0 -0
  67. data/app/assets/images/sc/brand/mailru/MailRuApi_32.png +0 -0
  68. data/app/assets/images/sc/brand/mailru/mailru-iphone.png +0 -0
  69. data/app/assets/images/sc/brand/mailru/mailru_64.png +0 -0
  70. data/app/assets/images/sc/brand/mailru/openid_128.png +0 -0
  71. data/app/assets/images/sc/brand/mailru/openid_256.png +0 -0
  72. data/app/assets/images/sc/brand/mailru/openid_32.png +0 -0
  73. data/app/assets/images/sc/brand/mailru/openid_64.png +0 -0
  74. data/app/assets/images/sc/brand/twitter/twitter_128.png +0 -0
  75. data/app/assets/images/sc/brand/twitter/twitter_256.png +0 -0
  76. data/app/assets/images/sc/brand/twitter/twitter_32.png +0 -0
  77. data/app/assets/images/sc/brand/twitter/twitter_64.png +0 -0
  78. data/app/assets/images/sc/brand/vkontakte/vkontakte_128.png +0 -0
  79. data/app/assets/images/sc/brand/vkontakte/vkontakte_256.png +0 -0
  80. data/app/assets/images/sc/brand/vkontakte/vkontakte_32.png +0 -0
  81. data/app/assets/images/sc/brand/vkontakte/vkontakte_64.png +0 -0
  82. data/app/assets/stylesheets/sc.css +12 -0
  83. data/app/controllers/authentications_controller.rb +66 -0
  84. data/app/controllers/registrations_controller.rb +31 -0
  85. data/app/models/authentication.rb +35 -0
  86. data/app/views/authentications/_collection.html.erb +37 -0
  87. data/app/views/authentications/index.html.erb +2 -0
  88. data/app/views/devise/confirmations/new.html.erb +11 -0
  89. data/app/views/devise/mailer/_bottom.html.erb +5 -0
  90. data/app/views/devise/mailer/confirmation_instructions.html.erb +4 -0
  91. data/app/views/devise/mailer/reset_password_instructions.html.erb +6 -0
  92. data/app/views/devise/mailer/unlock_instructions.html.erb +5 -0
  93. data/app/views/devise/passwords/edit.html.erb +14 -0
  94. data/app/views/devise/passwords/new.html.erb +11 -0
  95. data/app/views/devise/registrations/edit.html.erb +18 -0
  96. data/app/views/devise/registrations/new.html.erb +19 -0
  97. data/app/views/devise/sessions/new.html.erb +16 -0
  98. data/app/views/devise/shared/_links.erb +17 -0
  99. data/app/views/devise/shared/_social_links.html.erb +10 -0
  100. data/app/views/devise/unlocks/new.html.erb +11 -0
  101. data/config/ca-bundle.crt +5182 -0
  102. data/config/locales/devise.ru.yml +41 -0
  103. data/devise_russian.gemspec +2 -0
  104. data/lib/devise_russian/engine.rb +11 -0
  105. data/lib/devise_russian/models/base.rb +50 -0
  106. data/lib/devise_russian/version.rb +1 -1
  107. data/lib/devise_russian.rb +3 -4
  108. metadata +137 -2
@@ -0,0 +1,41 @@
1
+ ru:
2
+ errors:
3
+ messages:
4
+ not_found: "не найдено"
5
+ already_confirmed: "уже было подтверждено"
6
+ not_locked: "не было заблокировано"
7
+
8
+ devise:
9
+ failure:
10
+ unauthenticated: 'Вам нужно войти или зарегистрироваться перед тем, как продолжить.'
11
+ unconfirmed: 'Вам нужно подтвердить вашу учётную запись перед тем, как продолжить.'
12
+ locked: 'Ваша учётная запись заблокирована.'
13
+ invalid: 'Неверный адрес электронной почты или неверный пароль.'
14
+ invalid_token: 'Ошибочный токен аутентификации.'
15
+ timeout: 'Ваша рабочая сессия устарела, пожалуйста, войдите снова, чтобы продолжить.'
16
+ inactive: 'Ваша учётная запись ещё не активирована.'
17
+ sessions:
18
+ signed_in: 'Успешно вошли.'
19
+ signed_out: 'Успешно вышли.'
20
+ signed_already: 'Вы уже на сайте.'
21
+ passwords:
22
+ send_instructions: 'Вы получите письмо по электронной почте с инструкциями, как сбросить ваш пароль, в течение ближайших нескольких минут.'
23
+ updated: 'Ваш пароль был успешно изменён. Вы вошли на сайт.'
24
+ confirmations:
25
+ send_instructions: 'Вы получите письмо по электронной почте с инструкциями, как подтвердить вашу учётную запись, в течение ближайших нескольких минут.'
26
+ confirmed: 'Ваша учётная запись успешно подтверждена. Вы вошли на сайт.'
27
+ registrations:
28
+ signed_up: 'Вы успешно зарегистрировались. Подтверждение было выслано на ваш адрес электронной почты.'
29
+ signed_up_but_unconfirmed: 'Вы успешно зарегистрировались. Мы отправили вам письмо со ссылкой для активации аккаунта.'
30
+ updated: 'Вы успешно обновили вашу учётную запись.'
31
+ destroyed: 'Пока! Ваша учётная запись успешно прекратила своё существование. Мы будем рады увидеть вас снова позднее.'
32
+ unlocks:
33
+ send_instructions: 'Вы получите письмо по электронной почте с инструкциями, как разблокировать вашу учётную запись, в течение ближайших нескольких минут.'
34
+ unlocked: 'Ваша учётная запись успешно разблокирована. Вы вошли на сайт.'
35
+ mailer:
36
+ confirmation_instructions:
37
+ subject: 'Инструкции по подтверждению'
38
+ reset_password_instructions:
39
+ subject: 'Инструкции по сбросу пароля'
40
+ unlock_instructions:
41
+ subject: 'Инструкции по разблокировке'
@@ -18,4 +18,6 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_dependency "devise", ">= 2.2.3"
21
+ gem.add_dependency "omniauth", ">= 1.1.3"
22
+ gem.add_dependency "omniauth-oauth2", ">= 1.1.1"
21
23
  end
@@ -0,0 +1,11 @@
1
+ module DeviseRussian
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace DeviseRussian
4
+ engine_name 'devise_russian'
5
+
6
+ initializer "devise_russian.includers" do |app|
7
+ # ActionController::Base.send :include, DeviseRussian::Controllers::Base
8
+ ActiveRecord::Base.send :include, DeviseRussian::Models::Base
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+ module DeviseRussian
3
+ module Models
4
+ module Base
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def omniauthable
11
+ has_many :authentications, :dependent => :destroy
12
+ unless included_modules.include? InstanceMethods
13
+ include InstanceMethods
14
+ end
15
+ end
16
+ end
17
+
18
+ module InstanceMethods
19
+ def apply_omniauth(omniauth, with_self=false)
20
+ provider = omniauth['provider']
21
+ uid = omniauth['uid']
22
+ user_email = omniauth['extra']['raw_info']['email'] rescue nil
23
+ user_name = omniauth['extra']['raw_info']['first_name'] rescue nil
24
+
25
+ # Facebook omniauth: #<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=true expires_at=1368497603 token="AAAHyrzX1f8gBAEZBgtqQZCcLHgRDMbioJ6cltTxqTd3qlnvY1JXAtOivUKu8DzVfKf3f2x7ZCbZAF6qciuww2qVGVrFq6yoVxwZCHPZCn0HgZDZD"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash email="lapida@ya.ru" first_name="Lipada" gender="male" hometown=#<Hashie::Mash id="111803002172556" name="Tomsk, Russia"> id="100005327070305" last_name="Ru" link="http://www.facebook.com/profile.php?id=100005327070305" locale="ru_RU" name="Lipada Ru" timezone=7 updated_time="2013-02-20T15:25:45+0000" verified=true>> info=#<OmniAuth::AuthHash::InfoHash email="lapida@ya.ru" first_name="Lipada" image="http://graph.facebook.com/100005327070305/picture?type=square" last_name="Ru" name="Lipada Ru" urls=#<Hashie::Mash Facebook="http://www.facebook.com/profile.php?id=100005327070305"> verified=true> provider="facebook" uid="100005327070305">
26
+
27
+ # Vkontakte omniauth: #<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=true expires_at=1363456283 token="46de998d8c438603e0d92af694d47744260b89f1e493ffa2403c41ca98aaf9a26aae375a384e0817711c5"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash city="144" country="1" first_name="Lipada" last_name="Ru" nickname="" online=0 photo="https://vk.com/images/camera_c.gif" photo_big="https://vk.com/images/camera_a.gif" screen_name="id201853841" sex=2 uid=201853841>> info=#<OmniAuth::AuthHash::InfoHash first_name="Lipada" image="https://vk.com/images/camera_c.gif" last_name="Ru" location="Россия, Томск" name="Lipada Ru" nickname="" urls=#<Hashie::Mash Vkontakte="http://vk.com/id201853841">> provider="vkontakte" uid=201853841>
28
+
29
+ # Odnoklassniki omniauth: #<OmniAuth::AuthHash credentials=#<Hashie::Mash expires=false token="2aipa.2-71160004l6v6h3r406y3k6bsrv9"> extra=#<Hashie::Mash raw_info=#<Hashie::Mash age=25 birthday="1987-07-14" first_name="Lipada" gender="male" has_email=true last_name="ru" locale="ru" location=#<Hashie::Mash city="Томск" country="RUSSIAN_FEDERATION"> name="Lipada ru" online="web" pic_1="http://i503.odnoklassniki.ru/res/stub_50x50.gif" pic_2="http://usd8.odnoklassniki.ru/res/stub_128x96.gif" uid="555839750549">> info=#<OmniAuth::AuthHash::InfoHash first_name="Lipada" image="http://i503.odnoklassniki.ru/res/stub_50x50.gif" last_name="ru" name="Lipada ru" urls=#<Hashie::Mash Odnoklassniki="http://www.odnoklassniki.ru/profile/555839750549">> provider="odnoklassniki" uid="555839750549">
30
+
31
+ if with_self
32
+ self.email = user_email if user_email && self.email.blank?
33
+ self.name = user_name if user_name && self.name.blank?
34
+ end
35
+
36
+ self.authentications.build(
37
+ :provider => provider,
38
+ :uid => uid,
39
+ :email => user_email,
40
+ :name => user_name
41
+ )
42
+ end
43
+
44
+ def password_required?
45
+ (authentications.empty? || !password.blank?) && super
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,3 +1,3 @@
1
1
  module DeviseRussian
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -1,5 +1,4 @@
1
+ # coding: utf-8
2
+ require "devise_russian/models/base"
3
+ require "devise_russian/engine"
1
4
  require "devise_russian/version"
2
-
3
- module DeviseRussian
4
- # Your code goes here...
5
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_russian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-17 00:00:00.000000000 Z
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise
@@ -27,6 +27,38 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 2.2.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: omniauth
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.1.3
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.3
46
+ - !ruby/object:Gem::Dependency
47
+ name: omniauth-oauth2
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.1.1
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.1
30
62
  description: Часто используемые наработки по джему Devise. Включает решение по авторизации
31
63
  в социальных сетях
32
64
  email:
@@ -40,8 +72,111 @@ files:
40
72
  - LICENSE.txt
41
73
  - README.md
42
74
  - Rakefile
75
+ - app/assets/images/sc/.directory
76
+ - app/assets/images/sc/64/.directory
77
+ - app/assets/images/sc/64/afisha.png
78
+ - app/assets/images/sc/64/blogger.png
79
+ - app/assets/images/sc/64/blogru.png
80
+ - app/assets/images/sc/64/delicious.png
81
+ - app/assets/images/sc/64/deviantart.png
82
+ - app/assets/images/sc/64/digg.png
83
+ - app/assets/images/sc/64/facebook.png
84
+ - app/assets/images/sc/64/feed.png
85
+ - app/assets/images/sc/64/flickr.png
86
+ - app/assets/images/sc/64/formazon.png
87
+ - app/assets/images/sc/64/friendfeed.png
88
+ - app/assets/images/sc/64/friendster.png
89
+ - app/assets/images/sc/64/furl.png
90
+ - app/assets/images/sc/64/gglphone.png
91
+ - app/assets/images/sc/64/gmail.png
92
+ - app/assets/images/sc/64/google.png
93
+ - app/assets/images/sc/64/habrahabr.png
94
+ - app/assets/images/sc/64/icq.png
95
+ - app/assets/images/sc/64/lastfm.png
96
+ - app/assets/images/sc/64/linkedin.png
97
+ - app/assets/images/sc/64/livejournal.png
98
+ - app/assets/images/sc/64/magnolia.png
99
+ - app/assets/images/sc/64/mailru.png
100
+ - app/assets/images/sc/64/memori.png
101
+ - app/assets/images/sc/64/mixx.png
102
+ - app/assets/images/sc/64/moikrug.png
103
+ - app/assets/images/sc/64/myspace.png
104
+ - app/assets/images/sc/64/netvibes.png
105
+ - app/assets/images/sc/64/newsvine.png
106
+ - app/assets/images/sc/64/odnoklassniki.png
107
+ - app/assets/images/sc/64/open_id.png
108
+ - app/assets/images/sc/64/picasa.png
109
+ - app/assets/images/sc/64/plurk.png
110
+ - app/assets/images/sc/64/pownce.png
111
+ - app/assets/images/sc/64/reddit.png
112
+ - app/assets/images/sc/64/skype.png
113
+ - app/assets/images/sc/64/stumbleupon.png
114
+ - app/assets/images/sc/64/technorati.png
115
+ - app/assets/images/sc/64/twitter.png
116
+ - app/assets/images/sc/64/vimeo.png
117
+ - app/assets/images/sc/64/vkontakte.png
118
+ - app/assets/images/sc/64/webshots.png
119
+ - app/assets/images/sc/64/wordpress.png
120
+ - app/assets/images/sc/64/yahoo.png
121
+ - app/assets/images/sc/64/yandex.png
122
+ - app/assets/images/sc/64/yelp.png
123
+ - app/assets/images/sc/64/you_tube.png
124
+ - app/assets/images/sc/brand/facebook/facebook_128.png
125
+ - app/assets/images/sc/brand/facebook/facebook_256.png
126
+ - app/assets/images/sc/brand/facebook/facebook_32.png
127
+ - app/assets/images/sc/brand/facebook/facebook_64.png
128
+ - app/assets/images/sc/brand/github/github_128.png
129
+ - app/assets/images/sc/brand/github/github_256.png
130
+ - app/assets/images/sc/brand/github/github_32.png
131
+ - app/assets/images/sc/brand/github/github_64.png
132
+ - app/assets/images/sc/brand/google/google_128 copy.png
133
+ - app/assets/images/sc/brand/google/google_128.png
134
+ - app/assets/images/sc/brand/google/google_256 copy.png
135
+ - app/assets/images/sc/brand/google/google_256.png
136
+ - app/assets/images/sc/brand/google/google_32.png
137
+ - app/assets/images/sc/brand/google/google_64 copy.png
138
+ - app/assets/images/sc/brand/google/google_apps_32.png
139
+ - app/assets/images/sc/brand/google/google_apps_64.png
140
+ - app/assets/images/sc/brand/mailru/MailRuApi_32.png
141
+ - app/assets/images/sc/brand/mailru/mailru-iphone.png
142
+ - app/assets/images/sc/brand/mailru/mailru_64.png
143
+ - app/assets/images/sc/brand/mailru/openid_128.png
144
+ - app/assets/images/sc/brand/mailru/openid_256.png
145
+ - app/assets/images/sc/brand/mailru/openid_32.png
146
+ - app/assets/images/sc/brand/mailru/openid_64.png
147
+ - app/assets/images/sc/brand/twitter/twitter_128.png
148
+ - app/assets/images/sc/brand/twitter/twitter_256.png
149
+ - app/assets/images/sc/brand/twitter/twitter_32.png
150
+ - app/assets/images/sc/brand/twitter/twitter_64.png
151
+ - app/assets/images/sc/brand/vkontakte/vkontakte_128.png
152
+ - app/assets/images/sc/brand/vkontakte/vkontakte_256.png
153
+ - app/assets/images/sc/brand/vkontakte/vkontakte_32.png
154
+ - app/assets/images/sc/brand/vkontakte/vkontakte_64.png
155
+ - app/assets/stylesheets/sc.css
156
+ - app/controllers/authentications_controller.rb
157
+ - app/controllers/registrations_controller.rb
158
+ - app/models/authentication.rb
159
+ - app/views/authentications/_collection.html.erb
160
+ - app/views/authentications/index.html.erb
161
+ - app/views/devise/confirmations/new.html.erb
162
+ - app/views/devise/mailer/_bottom.html.erb
163
+ - app/views/devise/mailer/confirmation_instructions.html.erb
164
+ - app/views/devise/mailer/reset_password_instructions.html.erb
165
+ - app/views/devise/mailer/unlock_instructions.html.erb
166
+ - app/views/devise/passwords/edit.html.erb
167
+ - app/views/devise/passwords/new.html.erb
168
+ - app/views/devise/registrations/edit.html.erb
169
+ - app/views/devise/registrations/new.html.erb
170
+ - app/views/devise/sessions/new.html.erb
171
+ - app/views/devise/shared/_links.erb
172
+ - app/views/devise/shared/_social_links.html.erb
173
+ - app/views/devise/unlocks/new.html.erb
174
+ - config/ca-bundle.crt
175
+ - config/locales/devise.ru.yml
43
176
  - devise_russian.gemspec
44
177
  - lib/devise_russian.rb
178
+ - lib/devise_russian/engine.rb
179
+ - lib/devise_russian/models/base.rb
45
180
  - lib/devise_russian/version.rb
46
181
  homepage: https://github.com/vav/devise_russian
47
182
  licenses: []