Class: Playmo::Recipes::DeviseRecipe

Inherits:
Playmo::Recipe
  • Object
show all
Defined in:
lib/playmo/recipes/devise_recipe.rb

Instance Attribute Summary

Attributes inherited from Playmo::Recipe

#application_name, #question_instance, #silents

Instance Method Summary collapse

Methods inherited from Playmo::Recipe

#cook!, #question, #retrieve, #silently, #store

Instance Method Details

#install_deviseObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/playmo/recipes/devise_recipe.rb', line 10

def install_devise
  gem 'devise'

  Event.events.listen(:after_install) do |event_data|
    # Generate Devise stuff
    generate "devise:install"
    generate "devise User"
    generate "devise:views"

    # Add sign_up/login links into layout
    add_layout_links

    # Process Devise views to choosen markup
    process_views

    # Add :name accessor to default accessors
    # Also add some specific methods
    gsub_file 'app/models/user.rb', '  attr_accessible :email, :password, :password_confirmation, :remember_me' do
      <<-CONTENT.gsub(/^ {12}/, '')
        attr_accessible :email, :password, :password_confirmation, :remember_me, :name
        cattr_accessor :current
        
        # Return user name or user name from email address
        def username
          name.blank? ? email.match(/^[^@]+/)[0] : name
        end
      CONTENT
    end

    # Create migration that adds name field to users table
    filename  = "db/migrate/#{(Time.now - 3600).strftime("%Y%m%d%H%M%S")}_add_name_to_users.rb"

    create_file filename, <<-CONTENT.gsub(/^ {12}/, '')
      class AddNameToUsers < ActiveRecord::Migration
        def change
          add_column :users, :name, :string
        end
      end
    CONTENT
  end

  # Create default user
  append_to_file 'db/seeds.rb' do
    <<-CONTENT.gsub(/^ {12}/, '')
      user = User.create!(
        :email                 => '[email protected]',
        :password              => 'secret',
        :password_confirmation => 'secret'
      )

      user2 = User.create!(
        :email                 => '[email protected]',
        :password              => 'secret',
        :password_confirmation => 'secret'
      )
    CONTENT
  end

end

#setupObject



6
7
8
# File 'lib/playmo/recipes/devise_recipe.rb', line 6

def setup
  question "Would you like to use Devise in this project?" => :install_devise
end