class OauthBundle::Generators::InstallGenerator
Public Instance Methods
add_devise_omniauth_to_user_model()
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 31 def add_devise_omniauth_to_user_model inject_str = " devise :omniauthable, :omniauth_providers => [:facebook, :twitter, :github]\n" inject_into_file "app/models/user.rb", inject_str, :after => ":validatable\n" end
add_omniauth_to_devise_file()
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 21 def add_omniauth_to_devise_file @providers = [:github, :facebook, :twitter] inject_str = @providers.map do |e| " config.omniauth :#{e}, 'APP_ID', 'APP_SECRET'" end.join("\n") + "\n" inject_into_file "config/initializers/devise.rb", inject_str, :after => "scope: 'user,public_repo'\n" end
create_migration_for_auth_model()
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 16 def create_migration_for_auth_model system "rails g migration AddColumnsTo#{@auth_model.capitalize} provider uid" system "rake db:migrate" end
generate_omniauth_callback_controllers()
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 36 def generate_omniauth_callback_controllers path = "app/controllers/#{@auth_model}/omniauth_callbacks_controller.rb" create_file path append_file path, omniauth_callback_contrllers_content end
install_devise_auth_model()
click to toggle source
public method will be run automatically.
# File lib/generators/oauth_bundle/install/install_generator.rb, line 7 def install_devise_auth_model model = ask "Please provide authentication model name (default: users):" model = (model.empty? ? "users" : model).tableize @auth_model = model install_devise model config_devise_routes model end
Private Instance Methods
config_devise_routes(model)
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 51 def config_devise_routes(model) gsub_file "config/routes.rb", /devise_for :#{model}$/, "devise_for :#{model}, :controllers => {:omniauth_callbacks => 'users/omniauth_callbacks'}" end
install_devise(model)
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 44 def install_devise(model) system "rails g devise:install" unless File.exist?("app/models/#{model.singularize}.rb") system "rails g devise #{model.singularize}" end end
omniauth_callback_contrllers_content()
click to toggle source
# File lib/generators/oauth_bundle/install/install_generator.rb, line 55 def omniauth_callback_contrllers_content content = "class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController\n" providers = @providers.map do |e| " def #{e}\n #handle callback data in here.\n end\n" end.join("\n") "#{content}#{providers}end\n" end