From e136573905f1cef6c02f700f9ec0772da349f1c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 26 Mar 2010 10:35:15 +0100 Subject: [PATCH] Improve workflow with devise generator. --- CHANGELOG.rdoc | 1 + lib/generators/devise/devise_generator.rb | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index f3e32199..763f4c2e 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -12,6 +12,7 @@ * Move trackable logic to the model. * E-mails now use any template available in the filesystem. Easy to create multipart e-mails. * E-mails asks headers_for in the model to set the proper headers. + * Allow to specify haml in devise_views. * bug fix * Do not use lock! on lockable since it's part of ActiveRecord API. diff --git a/lib/generators/devise/devise_generator.rb b/lib/generators/devise/devise_generator.rb index f0985e66..21f1c828 100644 --- a/lib/generators/devise/devise_generator.rb +++ b/lib/generators/devise/devise_generator.rb @@ -18,13 +18,19 @@ class DeviseGenerator < Rails::Generators::NamedBase Time.now.utc.strftime("%Y%m%d%H%M%S") end + class_option :orm class_option :migration, :type => :boolean, :default => orm_has_migration? def invoke_orm_model - if File.exists?(File.join(destination_root, model_path)) + if model_exists? say "* Model already exists. Adding Devise behavior." else - invoke "model", [name], :migration => false + invoke "model", [name], :migration => false, :orm => options[:orm] + + unless model_exists? + abort "Tried to invoke the model generator for '#{options[:orm]}' but could not find it.\n" << + "Please create your model by hand before calling `rails g devise #{name}`." + end end end @@ -51,6 +57,10 @@ CONTENT protected + def model_exists? + File.exists?(File.join(destination_root, model_path)) + end + def model_path @model_path ||= File.join("app", "models", "#{file_path}.rb") end