Class: S6xAuthScaffoldGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Extended by:
ActiveRecord::Generators::Migration
Includes:
Rails::Generators::Migration
Defined in:
lib/s6x_auth_scaffold_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_routesObject



48
49
50
51
52
# File 'lib/s6x_auth_scaffold_generator.rb', line 48

def add_routes
  route('match "login" => "sessions#login"')
  route('match "logout" => "sessions#logout"')
  route(%Q'root :to => "#{options[:root_to]}"')
end

#create_sessions_controllerObject



41
42
43
44
45
46
# File 'lib/s6x_auth_scaffold_generator.rb', line 41

def create_sessions_controller
  template "app/controllers/sessions_controller.rb"
  template "test/functional/sessions_controller_test.rb"
  copy_file "app/views/sessions/login.html.erb"
  template "app/helpers/sessions_helper.rb"
end

#create_user_modelObject



35
36
37
38
39
# File 'lib/s6x_auth_scaffold_generator.rb', line 35

def create_user_model
  template "app/models/user.rb", "app/models/#{@user_model_file_name}.rb"
  template "test/unit/user_test.rb", "test/unit/#{@user_model_file_name}_test.rb"
  template "test/fixtures/users.yml", "test/fixtures/#{@users_table_name}.yml"
end

#create_users_migrationObject



25
26
27
28
29
30
31
32
33
# File 'lib/s6x_auth_scaffold_generator.rb', line 25

def create_users_migration
  migration_template "db/migrate/create_users.rb", "db/migrate/create_#{@users_table_name}.rb"
rescue Rails::Generators::Error => e
  if options[:skip]
    puts e.message
  else
    raise
  end
end

#edit_application_controllerObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/s6x_auth_scaffold_generator.rb', line 54

def edit_application_controller
  method_name = "current_#{@user_instance_name}"
  dest_path = "app/controllers/application_controller.rb"
  if ApplicationController.public_method_defined?(method_name.to_sym)
    msg = "ApplicationController is already defined #{method_name} method: #{dest_path}"
    if options[:skip]
      puts msg
    else
      raise Rails::Generators::Error, msg
    end
  else
    inject_into_class(dest_path, ApplicationController, "
# ログイン中のユーザを返す。
def #{method_name}
  if session[:#{@user_instance_name}_id]
    @current_#{@user_instance_name} ||= #{@user_model_name}.find(session[:#{@user_instance_name}_id])
  end
  return @current_#{@user_instance_name}
end
  
helper_method :current_#{@user_instance_name}

".force_encoding("ASCII-8BIT")) # NOTE: force_encoding("ASCII-8BIT")はThorのバグを回避するため。
  end
end

#parse_optionsObject



18
19
20
21
22
23
# File 'lib/s6x_auth_scaffold_generator.rb', line 18

def parse_options
  @user_model_name = file_name.camelize
  @user_model_file_name = file_name.underscore
  @user_instance_name = file_name.underscore
  @users_table_name = file_name.underscore.pluralize
end