Skip to content
Newer
Older
100644 270 lines (164 sloc) 10.6 KB
673fda9 @josevalim First commit.
josevalim authored Sep 16, 2009
1 == Devise
2
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
3 Devise is a flexible authentication solution for Rails based on Warden. It:
4
5 * Is Rack based;
6 * Is a complete MVC solution based on Rails engines;
7 * Allows you to have multiple roles (or models/scopes) signed in at the same time;
8 * Is based on a modularity concept: use just what you really need.
9
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
10 Right now it's composed of six modules included by default when you invoke "devise :all" in your models:
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
11
b28d7e8 @josevalim Renamed authenticable to authenticatable and added deprecation warnings.
josevalim authored Oct 30, 2009
12 * Authenticatable: responsible for encrypting password and validating authenticity of a user while signing in.
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
13 * Confirmable: responsible for verifying whether an account is already confirmed to sign in, and to send emails with confirmation instructions.
14 * Recoverable: takes care of reseting the user password and send reset instructions.
d26f90f @carlosantoniodasilva Updating docs and TODO.
carlosantoniodasilva authored Oct 20, 2009
15 * Rememberable: manages generating and clearing token for remember the user from a saved cookie.
0434d72 @josevalim Update TODO, CHANGELOG and README.
josevalim authored Nov 24, 2009
16 * Trackable: tracks sign in count, timestamps and ip.
4f8ec23 @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
17 * Validatable: creates all needed validations for email and password. It's totally optional, so you're able to to customize validations by yourself.
673fda9 @josevalim First commit.
josevalim authored Sep 16, 2009
18
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
19 And it also includes the optional modules:
20
21 * Activatable: if you need to activate accounts by other means, which are not through confirmation, use this module.
22 * Timeoutable: expires sessions without activity in a certain period of time.
23
046bb70 @georgeguimaraes link to devise_example repository in README
georgeguimaraes authored Oct 20, 2009
24 There's an example application using Devise at http://github.com/plataformatec/devise_example .
25
673fda9 @josevalim First commit.
josevalim authored Sep 16, 2009
26 == Dependencies
27
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
28 Devise is based on Warden (http://github.com/hassox/warden), a Rack Authentication Framework so you need to install it as a gem. Please ensure you have it installed in order to use devise (see installation below).
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
29
30 == Installation
31
2fe1a69 @josevalim Added jeweler to rakefile and version.
josevalim authored Oct 21, 2009
32 All gems are on gemcutter, so you need to add gemcutter to your sources if you haven't yet:
33
34 sudo gem sources -a http://gemcutter.org/
35
f1ed635 @carlosantoniodasilva Updating README, TODO and CHANGELOG
carlosantoniodasilva authored Nov 23, 2009
36 Install warden gem if you don't have it installed (requires 0.6.4 or higher):
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
37
38 sudo gem install warden
39
6f450d7 @carlosantoniodasilva Fix requiring devise mapping, and adding some documentation about rou…
carlosantoniodasilva authored Oct 21, 2009
40 Install devise gem:
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
41
2fe1a69 @josevalim Added jeweler to rakefile and version.
josevalim authored Oct 21, 2009
42 sudo gem install devise
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
43
6f450d7 @carlosantoniodasilva Fix requiring devise mapping, and adding some documentation about rou…
carlosantoniodasilva authored Oct 21, 2009
44 Configure warden and devise gems inside your app:
45
46 config.gem 'warden'
47 config.gem 'devise'
48
3432c9e @josevalim Simplify autoload stack.
josevalim authored Dec 12, 2009
49 Run the generator:
50
51 ruby script/generate devise_install
52
4c531df @josevalim Remove DeviseMailer from README and set a default value for mailer_se…
josevalim authored Jan 2, 2010
53 And you're ready to go. The generator will install an initializer which describes Devise's configuration options. Be sure to take a look.
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
54
55 == Basic Usage
56
a239b31 @carlosantoniodasilva Fix typo in README, updating TODO and CHANGELOG
carlosantoniodasilva authored Oct 23, 2009
57 This is a walkthrough with all steps you need to setup a devise resource, including model, migration, route files, and optional configuration. You can also check out the *Generators* section below to help you start.
cb285bf @carlosantoniodasilva Updating readme with missing migration info.
carlosantoniodasilva authored Oct 15, 2009
58
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
59 Devise must be set up within the model (or models) you want to use, and devise routes must be created inside your config/routes.rb file.
0a317c9 @carlosantoniodasilva README with some Generators info.
carlosantoniodasilva authored Oct 23, 2009
60
cb285bf @carlosantoniodasilva Updating readme with missing migration info.
carlosantoniodasilva authored Oct 15, 2009
61 We're assuming here you want a User model. First of all you have to setup a migration with the following fields:
62
95989dc @rejeep create_table yields a table object.
rejeep authored Dec 29, 2009
63 create_table :users do |t|
b28d7e8 @josevalim Renamed authenticable to authenticatable and added deprecation warnings.
josevalim authored Oct 30, 2009
64 t.authenticatable
f00d29c @josevalim Devise migratable.
josevalim authored Oct 21, 2009
65 t.confirmable
66 t.recoverable
67 t.rememberable
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
68 t.trackable
f00d29c @josevalim Devise migratable.
josevalim authored Oct 21, 2009
69 t.timestamps
70 end
d26f90f @carlosantoniodasilva Updating docs and TODO.
carlosantoniodasilva authored Oct 20, 2009
71
72 You may also want to add some indexes to improve performance:
73
74 add_index :your_table, :email
75 add_index :your_table, :confirmation_token # for confirmable
76 add_index :your_table, :reset_password_token # for recoverable
77
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
78 Now let's setup a User model adding the devise line:
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
79
80 class User < ActiveRecord::Base
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
81 devise :all
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
82 end
83
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
84 This will include the six default modules outlined at the beginning. You can exclude and remove any module at will:
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
85
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
86 # Include timeout configuration
87 devise :all, :timeoutable
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
88
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
89 # Remove validations
90 devise :all, :except => :validatable
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
91
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
92 Remember that Devise don't rely on _attr_accessible_ or _attr_protected_ inside its modules, so be sure to setup what attributes are accessible or protected in your model.
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
93
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
94 == Model configuration
3209e7d @josevalim Renamed confirm_in to confirm_within.
josevalim authored Oct 30, 2009
95
f1ed635 @carlosantoniodasilva Updating README, TODO and CHANGELOG
carlosantoniodasilva authored Nov 24, 2009
96 In addition to :except, you can provide :pepper, :stretches, :encryptor, :authentication_keys, :confirm_within, :remember_for and :timeout as options to devise method.
342f948 @carlosantoniodasilva Adding pepper and stretches configuration per model, and globaly setu…
carlosantoniodasilva authored Oct 20, 2009
97
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
98 All those options are described in "config/initializers/devise.rb", which is generated when you invoke `ruby script/generate devise_install` in your application root.
3209e7d @josevalim Renamed confirm_in to confirm_within.
josevalim authored Oct 30, 2009
99
100 == Routes
101
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
102 The next step after setting up your model is to configure your routes for devise. You do this by opening up your config/routes.rb and adding:
103
104 map.devise_for :users
105
d445b4b @josevalim Create after_sign_in_path_for and after_sign_out_path_for hooks and s…
josevalim authored Nov 19, 2009
106 This is going to look inside you User model and create a set of needed routes (you can see them by running `rake routes`).
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
107
d445b4b @josevalim Create after_sign_in_path_for and after_sign_out_path_for hooks and s…
josevalim authored Nov 19, 2009
108 There are also some options available for configuring your routes, as :class_name (to set the class for that route), :as and :path_names, where the last two have the same meaning as in common routes. The available :path_names are:
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
109
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
110 map.devise_for :users, :as => "usuarios", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification' }
b21b629 @carlosantoniodasilva Better documentation.
carlosantoniodasilva authored Oct 17, 2009
111
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
112 Be sure to check devise_for documentation for detailed description.
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
113
d445b4b @josevalim Create after_sign_in_path_for and after_sign_out_path_for hooks and s…
josevalim authored Nov 19, 2009
114 == Controller filters and helpers
3209e7d @josevalim Renamed confirm_in to confirm_within.
josevalim authored Oct 30, 2009
115
116 Devise is gonna create some helpers to use inside your controllers and views. To setup a controller that needs user authentication, just add this before_filter:
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
117
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
118 before_filter :authenticate_user!
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
119
120 To verify if a user is signed in, you have the following helper:
121
122 user_signed_in?
123
124 And to get the current signed in user this helper is available:
125
126 current_user
127
cce3f58 @carlosantoniodasilva Fix typo and filter info in readme.
carlosantoniodasilva authored Oct 18, 2009
128 You have also access to the session for this scope:
129
130 user_session
131
6f450d7 @carlosantoniodasilva Fix requiring devise mapping, and adding some documentation about rou…
carlosantoniodasilva authored Oct 21, 2009
132 After signing in a user, confirming it's account or updating it's password, devise will look for a scoped root path to redirect. Example: For a :user resource, it will use user_root_path if it exists, otherwise default root_path will be used. To do it so, you need to create e default root inside your routes for your application:
133
134 map.root :controller => 'home'
135
d445b4b @josevalim Create after_sign_in_path_for and after_sign_out_path_for hooks and s…
josevalim authored Nov 19, 2009
136 You can also overwrite after_sign_in_path_for and after_sign_out_path_for to customize better your redirect hooks.
137
4c531df @josevalim Remove DeviseMailer from README and set a default value for mailer_se…
josevalim authored Jan 2, 2010
138 Finally, if you are using confirmable or recoverable, you also need to setup default url options for the mailer in each environment. Here's is the configuration for config/environments/development.rb:
6f450d7 @carlosantoniodasilva Fix requiring devise mapping, and adding some documentation about rou…
carlosantoniodasilva authored Oct 21, 2009
139
1db50de Skip authentication filters by default on Devise controllers and add …
José Valim authored Nov 6, 2009
140 config.action_mailer.default_url_options = { :host => 'localhost:3000' }
fc08a7c @carlosantoniodasilva Changing resource_home_path to resource_root_path and add the same re…
carlosantoniodasilva authored Oct 19, 2009
141
f1ed635 @carlosantoniodasilva Updating README, TODO and CHANGELOG
carlosantoniodasilva authored Nov 24, 2009
142 == Views
143
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
144 By default devise will use the same views for all scopes/roles you have. But what if you need so different views to each of them? Devise also has an easy way to accomplish it: just setup config,scoped_views to true inside your devise config file, and you will be able to have views based on scope like 'sessions/users/new' and 'sessions/admin/new'. If no view is found within the scope, Devise will fallback to the default view.
f1ed635 @carlosantoniodasilva Updating README, TODO and CHANGELOG
carlosantoniodasilva authored Nov 24, 2009
145
3209e7d @josevalim Renamed confirm_in to confirm_within.
josevalim authored Oct 30, 2009
146 == Tidying up
147
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
148 Devise let's you setup as many roles as you want, so let's say you already have this User model and also want an Admin model with just authentication, trackable and timeoutable stuff and none of confirmation or password recovery. Just follow the same steps:
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
149
cb285bf @carlosantoniodasilva Updating readme with missing migration info.
carlosantoniodasilva authored Oct 15, 2009
150 # Create a migration with the required fields
f00d29c @josevalim Devise migratable.
josevalim authored Oct 21, 2009
151 create_table :admins do |t|
b28d7e8 @josevalim Renamed authenticable to authenticatable and added deprecation warnings.
josevalim authored Oct 30, 2009
152 t.authenticatable
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
153 t.trackable
f00d29c @josevalim Devise migratable.
josevalim authored Oct 21, 2009
154 end
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
155
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
156 # Inside your Admin model
a789f08 @josevalim Cleaning up README to be more compatible with the latest stuff.
josevalim authored Jan 5, 2010
157 devise :authenticatable, :trackable, :timeoutable
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
158
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
159 # Inside your routes
160 map.devise_for :admin
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
161
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
162 # Inside your protected controller
cce3f58 @carlosantoniodasilva Fix typo and filter info in readme.
carlosantoniodasilva authored Oct 18, 2009
163 before_filter :authenticate_admin!
9feb945 @josevalim Allow page after sign in to be configured.
josevalim authored Oct 18, 2009
164
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
165 # Inside your controllers and views
166 admin_signed_in?
167 current_admin
cce3f58 @carlosantoniodasilva Fix typo and filter info in readme.
carlosantoniodasilva authored Oct 18, 2009
168 admin_session
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
169
0a317c9 @carlosantoniodasilva README with some Generators info.
carlosantoniodasilva authored Oct 23, 2009
170 == Generators
171
172 Devise comes with some generators to help you start:
173
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
174 ruby script/generate devise_install
175
176 This will generate an initializer, with a description of all configuration values. You can also generate models through:
177
178 ruby script/generate devise Model
0a317c9 @carlosantoniodasilva README with some Generators info.
carlosantoniodasilva authored Oct 23, 2009
179
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
180 A model configured with all devise modules and attr_accessible for default fields will be created. The generator will also create the migration and configure your routes for devise.
0a317c9 @carlosantoniodasilva README with some Generators info.
carlosantoniodasilva authored Oct 23, 2009
181
182 You can also copy devise views to your application, being able to modify them based on your needs. To do it so, run the following command:
183
8882727 @josevalim Created a generator that copies an initializer with configuration val…
josevalim authored Nov 3, 2009
184 ruby script/generate devise_views
0a317c9 @carlosantoniodasilva README with some Generators info.
carlosantoniodasilva authored Oct 23, 2009
185
dc86a57 @josevalim [DEPRECATION] Notifier is deprecated, use DeviseMailer instead. Remem…
josevalim authored Nov 2, 2009
186 This is gonna copy all session, password, confirmation and mailer views to your app/views folder.
0a317c9 @carlosantoniodasilva README with some Generators info.
carlosantoniodasilva authored Oct 23, 2009
187
0eb8b3b @carlosantoniodasilva Mailer subjects namespaced by model
carlosantoniodasilva authored Oct 20, 2009
188 == I18n
189
475da06 @josevalim Make ActionMailer and ActionController more consistent by always usin…
josevalim authored Oct 29, 2009
190 Devise uses flash messages with I18n with the flash keys :success and :failure. To customize your app, you can setup your locale file this way:
0eb8b3b @carlosantoniodasilva Mailer subjects namespaced by model
carlosantoniodasilva authored Oct 20, 2009
191
192 en:
193 devise:
194 sessions:
195 signed_in: 'Signed in successfully.'
196
475da06 @josevalim Make ActionMailer and ActionController more consistent by always usin…
josevalim authored Oct 29, 2009
197 You can also create distinct messages based on the resource you've configured using the singular name given in routes:
0eb8b3b @carlosantoniodasilva Mailer subjects namespaced by model
carlosantoniodasilva authored Oct 20, 2009
198
199 en:
200 devise:
201 sessions:
202 user:
203 signed_in: 'Welcome user, you are signed in.'
204 admin:
205 signed_in: 'Hello admin!'
206
dc86a57 @josevalim [DEPRECATION] Notifier is deprecated, use DeviseMailer instead. Remem…
josevalim authored Nov 3, 2009
207 Devise mailer uses the same pattern to create subject messages:
0eb8b3b @carlosantoniodasilva Mailer subjects namespaced by model
carlosantoniodasilva authored Oct 20, 2009
208
209 en:
210 devise:
dc86a57 @josevalim [DEPRECATION] Notifier is deprecated, use DeviseMailer instead. Remem…
josevalim authored Nov 3, 2009
211 mailer:
0eb8b3b @carlosantoniodasilva Mailer subjects namespaced by model
carlosantoniodasilva authored Oct 20, 2009
212 confirmation_instructions: 'Hello everybody!'
213 user:
214 confirmation_instructions: 'Hello User! Please confirm your email'
215 reset_password_instructions: 'Reset instructions'
216
217 Take a look at our locale file to check all available messages.
218
97a7f0e @josevalim Added test helpers.
josevalim authored Nov 16, 2009
219 == Test helpers
220
d9fbdff @josevalim More testing info in README.
josevalim authored Dec 7, 2009
221 Devise includes some tests helpers for functional specs. To use them, you just need to include Devise::TestHelpers in your test class and use the sign_in and sign_out method. Such methods have the same signature as in controllers:
97a7f0e @josevalim Added test helpers.
josevalim authored Nov 16, 2009
222
223 sign_in :user, @user # sign_in(scope, resource)
224 sign_in @user # sign_in(resource)
225
226 sign_out :user # sign_out(scope)
227 sign_out @user # sign_out(resource)
228
d9fbdff @josevalim More testing info in README.
josevalim authored Dec 7, 2009
229 You can include the Devise Test Helpers in all of your tests by adding the following to the bottom of your test/test_helper.rb or spec/spec_helper.rb file:
529cd8b @trevorturk Add example for including Devise::TestHelpers in all functional tests…
trevorturk authored Nov 20, 2009
230
231 class ActionController::TestCase
232 include Devise::TestHelpers
233 end
234
d9fbdff @josevalim More testing info in README.
josevalim authored Dec 7, 2009
235 Do not use such helpers for integration tests like Cucumber, Webrat... Just fill in the form or explicitly set the user in session. For more tips, check the wiki (http://wiki.github.com/plataformatec/devise).
236
2825998 @mhfs adding migration notes to readme
mhfs authored Nov 10, 2009
237 == Migrating from other solutions
238
239 Devise implements encryption strategies for Clearance, Authlogic and Restful-Authentication. To make use of it set the desired encryptor in the encryptor initializer config option. You might also need to rename your encrypted password and salt columns to match Devises's one (encrypted_password and password_salt).
240
8775f5d @josevalim Tidy up MongoMapper and Schema.
josevalim authored Nov 13, 2009
241 == Other ORMs
242
f1ed635 @carlosantoniodasilva Updating README, TODO and CHANGELOG
carlosantoniodasilva authored Nov 24, 2009
243 Devise was made to work from scratch with ActiveRecord. However it currently supports DataMapper and MongoMapper as well.
8775f5d @josevalim Tidy up MongoMapper and Schema.
josevalim authored Nov 14, 2009
244 To use it, just set Devise.orm or configure it in the initialization file (which is created with devise_install).
245
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
246 == TODO
247
248 Please refer to TODO file.
249
6bd8846 @josevalim Update Maintainers and Contributors section. Add Grimen for his work …
josevalim authored Dec 23, 2009
250 == Maintainers
6d09eb6 @josevalim Tidying up encryptors.
josevalim authored Nov 10, 2009
251
252 * José Valim (http://github.com/josevalim)
253 * Carlos Antônio da Silva (http://github.com/carlosantoniodasilva)
6bd8846 @josevalim Update Maintainers and Contributors section. Add Grimen for his work …
josevalim authored Dec 23, 2009
254
255 == Contributors
256
6d09eb6 @josevalim Tidying up encryptors.
josevalim authored Nov 10, 2009
257 * Marcelo Silveira (http://github.com/mhfs)
8775f5d @josevalim Tidy up MongoMapper and Schema.
josevalim authored Nov 14, 2009
258 * Cyril Mougel (http://github.com/shingara)
6bd8846 @josevalim Update Maintainers and Contributors section. Add Grimen for his work …
josevalim authored Dec 23, 2009
259 * Jonas Grimfelt (http://github.com/grimen)
6d09eb6 @josevalim Tidying up encryptors.
josevalim authored Nov 10, 2009
260
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
261 == Bugs and Feedback
673fda9 @josevalim First commit.
josevalim authored Sep 16, 2009
262
f8a83e0 @josevalim Add mailing list to README.
josevalim authored Oct 23, 2009
263 If you discover any bugs or want to drop a line, feel free to create an issue on
264 GitHub or send an e-mail to the mailing list.
265
266 http://github.com/plataformatec/devise/issues
267 http://groups.google.com/group/plataformatec-devise
673fda9 @josevalim First commit.
josevalim authored Sep 16, 2009
268
493f91f @carlosantoniodasilva Readme updates.
carlosantoniodasilva authored Oct 13, 2009
269 MIT License. Copyright 2009 Plataforma Tecnologia. http://blog.plataformatec.com.br
Something went wrong with that request. Please try again.