mirror of
https://github.com/heartcombo/devise.git
synced 2026-04-28 03:00:29 -04:00
Adding simple devise generator to create a model, migration and route.
This commit is contained in:
1
generators/devise/USAGE
Normal file
1
generators/devise/USAGE
Normal file
@@ -0,0 +1 @@
|
||||
script/generate devise User
|
||||
25
generators/devise/devise_generator.rb
Normal file
25
generators/devise/devise_generator.rb
Normal file
@@ -0,0 +1,25 @@
|
||||
require File.expand_path(File.dirname(__FILE__) + "/lib/route_devise.rb")
|
||||
|
||||
class DeviseGenerator < Rails::Generator::NamedBase
|
||||
|
||||
def manifest
|
||||
record do |m|
|
||||
# Check for class naming collisions.
|
||||
m.class_collisions(class_name)
|
||||
|
||||
# Model
|
||||
m.directory(File.join('app', 'models', class_path))
|
||||
m.template 'model.rb', File.join('app', 'models', "#{file_path}.rb")
|
||||
|
||||
# Migration
|
||||
m.migration_template 'migration.rb', 'db/migrate', :migration_file_name => "devise_create_#{table_name}"
|
||||
|
||||
# Routing
|
||||
m.route_devise table_name
|
||||
|
||||
# Readme
|
||||
m.readme "README"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
32
generators/devise/lib/route_devise.rb
Normal file
32
generators/devise/lib/route_devise.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
module Rails
|
||||
module Generator
|
||||
module Commands
|
||||
class Create < Base
|
||||
|
||||
# Create devise route. Based on route_resources
|
||||
def route_devise(*resources)
|
||||
resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
|
||||
sentinel = 'ActionController::Routing::Routes.draw do |map|'
|
||||
|
||||
logger.route "map.devise_for #{resource_list}"
|
||||
unless options[:pretend]
|
||||
gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
|
||||
"#{match}\n map.devise_for #{resource_list}\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Destroy < RewindBase
|
||||
|
||||
# Destroy devise route. Based on route_resources
|
||||
def route_devise(*resources)
|
||||
resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
|
||||
look_for = "\n map.devise_for #{resource_list}\n"
|
||||
logger.route "map.devise_for #{resource_list}"
|
||||
gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
21
generators/devise/templates/README
Normal file
21
generators/devise/templates/README
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
================================================================================
|
||||
|
||||
Some setup you must do manually if you haven't yet:
|
||||
|
||||
1. Setup defaut url options for your specific environment. Here is an example of development environment:
|
||||
|
||||
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
|
||||
|
||||
It's a Rails required configuration.
|
||||
In production it must be the actual host your application is deployed to.
|
||||
|
||||
2. Setup default sender for mails.In config/environment.rb:
|
||||
|
||||
Notifier.sender = "test@example.com"
|
||||
|
||||
3. Ensure you have defined root_url to *something* in your config/routes.rb:
|
||||
|
||||
map.root :controller => 'home'
|
||||
|
||||
================================================================================
|
||||
20
generators/devise/templates/migration.rb
Normal file
20
generators/devise/templates/migration.rb
Normal file
@@ -0,0 +1,20 @@
|
||||
class DeviseCreate<%= table_name.camelize %> < ActiveRecord::Migration
|
||||
def self.up
|
||||
create_table(:<%= table_name %>) do |t|
|
||||
t.authenticable
|
||||
t.confirmable
|
||||
t.recoverable
|
||||
t.rememberable
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :<%= table_name %>, :email, :unique => true
|
||||
add_index :<%= table_name %>, :confirmation_token, :unique => true
|
||||
add_index :<%= table_name %>, :reset_password_token, :unique => true
|
||||
end
|
||||
|
||||
def self.down
|
||||
drop_table :<%= table_name %>
|
||||
end
|
||||
end
|
||||
5
generators/devise/templates/model.rb
Normal file
5
generators/devise/templates/model.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class <%= class_name %> < ActiveRecord::Base
|
||||
devise :all
|
||||
# Setup accessible (or protected) attributes for your model
|
||||
attr_accessible :email, :password, :password_confirmation
|
||||
end
|
||||
Reference in New Issue
Block a user