class Devowd::Generators::InstallGenerator

Public Class Methods

next_migration_number(path) click to toggle source
# File lib/generators/devowd/install_generator.rb, line 159
def self.next_migration_number(path)
  unless @prev_migration_nr
    @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
  else
    @prev_migration_nr += 1
  end
  @prev_migration_nr.to_s
end

Public Instance Methods

install_admin_model() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 79
def install_admin_model
  puts "..."
  copy_file "models/admin.rb", "app/models/admin.rb"
  copy_file "controllers/admins_controller.rb", "app/controllers/admins_controller.rb"
  migration_template "migrations/admin_migration.rb", "db/migrate/create_admins.rb"
  copy_file "views/admin_show.html", "app/views/admins/show.html.erb"
end
install_application_layout() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 148
def install_application_layout
  app_layout = "app/views/layouts/application.html.erb"
  this_text = '  <% ENV["HOST"] = request.host_with_port %>
  <%= render partial: "visitor_signed_in" %>
  <%= flash[:notice] %>
  <%= flash[:alert] %>'
  this_line = "<body>\n"
  inject_into_file app_layout, this_text, after: this_line
  copy_file "views/_visitor_signed_in.html", "app/views/application/_visitor_signed_in.html.erb"
end
install_devise() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 9
    def install_devise
      puts "DEVISE CONFIG"
      @email_signature = ask("Signature you will use to send activation invitation from [ex.: Mike Brown]:")
      @email = ask("Email you will use to send activation invitation from [ex.: m.brown@example.com]:")
      @email_password = ask("Password for email [ex.: s0mepaSS]:")
      #crowd configurations
      puts "CROWD CONFIG"
      @crowd_http = ask("Crowd server http [ex.: http://crowd.example.ru/crowd]:")
      @crowd_appname = ask("Name for your application at Crowd server [ex.: awesomeApp]:")
      @crowd_apppassword = ask("Password for your applicaiton at Crowd server [ex.: secret]:")
      template "config/devise.rb.erb", "config/initializers/devise.rb"
      copy_file "config/devise.en.yml", "config/locales/devise.en.yml"
      copy_file "controllers/omniauth_callbacks_controller.rb", "app/controllers/omniauth_callbacks_controller.rb"
      inject_into_class "app/controllers/application_controller.rb", ApplicationController do
        "   def after_sign_in_path_for(resource)
  if resource.instance_of? User
    sign_out(current_admin) if !current_admin.nil?
    resource.pass_required = true
    return user_path(resource)
  end
  if resource.instance_of? Admin
    sign_out(current_user) if !current_user.nil?
    return admin_path(resource)
  end
end

def after_sign_out_path_for(resource)
  return admin_login_path if resource == :admin
  return new_user_session_path if resource == :user
end\n"
      end
    end
install_figaro() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 134
      def install_figaro
        if File.exists?("config/application.yml")
          append_to_file("config/application.yml") do
"CROWD_APPNAME: '#{@crowd_appname}'
CROWD_APPPASSWORD: '#{@crowd_apppassword}'
MAIL_USERNAME: '#{@email}'
MAIL_PASSWORD: '#{@email_password}'
"
          end
        else
          template("config/application.yml.erb", "config/application.yml")
        end
      end
install_mailer() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 42
    def install_mailer
      template "mailer/app_mailer.rb.erb", "app/mailers/app_mailer.rb"
      @tls = 'false'
      @address = 'smtp.yandex.ru'
      @port = '587'
      @domain = 'awesome.domain.com'
      @authentication = 'plain'
      @enable_starttls_auto = 'true'

      development = "config/environments/development.rb"
      this_text = "  config.action_mailer.default_url_options = { :host => ENV['HOST'] }
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :tls => #{@tls},
  :address              => '#{@address}',
  :port                 => #{@port},
  :domain               => '#{@domain}',
  :user_name            => ENV['MAIL_USERNAME'],
  :password             => ENV['MAIL_PASSWORD'],
  :authentication       => '#{@authentication}',
  :enable_starttls_auto => #{@enable_starttls_auto}
}"
      this_line = "#{Rails.application.class.parent_name}::Application.configure do\n"
      inject_into_file development, this_text, after: this_line
      this_line = "Rails.application.configure do\n"
      inject_into_file development, this_text, after: this_line

      production = "config/environments/production.rb"
      this_line = "#{Rails.application.class.parent_name}::Application.configure do\n"
      inject_into_file production, this_text, after: this_line
      this_line = "Rails.application.configure do\n"
      inject_into_file production, this_text, after: this_line
      
      copy_file "mailer/user_activate_mail_template.html.erb", "app/views/app_mailer/user_activate.html.erb"
    end
install_migration() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 101
def install_migration
  run('bundle exec rake db:create')
  run('bundle exec rake db:migrate')
end
install_routes() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 106
    def install_routes
      routes = "config/routes.rb"
      this_text = "  devise_for :admins, controllers: {omniauth_callbacks: 'omniauth_callbacks'}
devise_scope :admin do
  delete '/admins/logout', to: 'devise/sessions#destroy'
  get '/admin', to: 'admins#admin', as: 'admin_login'
end
resources :admins, only: [:show]

unauthenticated do
  root to: redirect('/users/login'), as: 'user_redirect_to_login'
  get '/users/new', to: redirect('/users/login'), as: 'new_user_redirect_to_login'
end

authenticated :user do
  devise_scope :user do
    get '/users/new', to: redirect('/'), as: 'new_user_redirect_to_root'
  end
end

devise_for :users, path_names: {sign_in: 'login', sign_out: 'logout'}
resources :users, only: [:show, :create, :new, :edit, :update, :destroy]"
      this_line = "#{Rails.application.class.parent_name}::Application.routes.draw do\n"
      inject_into_file routes, this_text, after: this_line
      this_line = "Rails.application.routes.draw do\n"
      inject_into_file routes, this_text, after: this_line
    end
install_user_model() click to toggle source
# File lib/generators/devowd/install_generator.rb, line 87
def install_user_model
  copy_file "models/user.rb", "app/models/user.rb"
  copy_file "controllers/users_controller.rb", "app/controllers/users_controller.rb"
  migration_template "migrations/user_migration.rb", "db/migrate/create_users.rb"
  empty_directory "app/views/devise/sessions"
  copy_file "views/new.html", "app/views/devise/sessions/new.html.erb"
  copy_file "views/user_new.html", "app/views/users/new.html.erb"
  copy_file "views/user_show.html", "app/views/users/show.html.erb"
  copy_file "views/user_edit.html", "app/views/users/edit.html.erb"
  copy_file "views/user_edit_by_admin.html", "app/views/application/_edit_user_by_admin.html.erb"
  copy_file "views/user_edit_by_user.html", "app/views/application/_edit_user_by_user.html.erb"
  copy_file "views/user_collection_template.html", "app/views/application/_user.html.erb"
end