class ClientManager::InstallGenerator

Public Class Methods

source_root() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 6
def self.source_root
  @source_root ||= File.join(File.dirname(__FILE__), 'templates')
end

Public Instance Methods

convert_api_only_to_normal() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 48
def convert_api_only_to_normal
  if is_rails_api?
    add_action_dispatch_to_application
    require_sprockets_railtie
    remove_api_only_declaration
  end
end
create_initializer_file() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 11
def create_initializer_file
  copy_file 'client_manager.rb', 'config/initializers/client_manager.rb'
end
ignore_mailer_failure() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 41
def ignore_mailer_failure
  application do
    "config.action_mailer.raise_delivery_errors = false"
  end
  say_status("insert", "config/application.rb")
end
include_controller_concerns() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 16
    def include_controller_concerns
      fname = "app/controllers/application_controller.rb"
      line = "include ClientManager::Concerns::SetClientByToken"

      if File.exist?(File.join(destination_root, fname))
        if parse_file_for_line(fname, line)
          say_status("skipped", "Concern is already included in the application controller.")
        elsif is_rails_api?
          inject_into_file fname, after: "class ApplicationController < ActionController::API\n" do
            <<-'RUBY'
  include ClientManager::Concerns::SetClientByToken
            RUBY
          end
        else
          inject_into_file fname, after: "class ApplicationController < ActionController::Base\n" do
            <<-'RUBY'
  include ClientManager::Concerns::SetClientByToken
            RUBY
          end
        end
      else
        say_status("skipped", "app/controllers/application_controller.rb not found. Add 'include ClientManager::Concerns::SetClientByToken' to any controllers that require authentication.")
      end
    end

Private Instance Methods

add_action_dispatch_to_application() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 59
def add_action_dispatch_to_application
  application do
    "config.middleware.use ActionDispatch::Flash"
  end
  say_status("insert", "config/application.rb")
end
is_rails_api?() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 100
def is_rails_api?
  fname = "app/controllers/application_controller.rb"
  line = "class ApplicationController < ActionController::API"
  parse_file_for_line(fname, line)
end
parse_file_for_line(filename, str) click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 87
def parse_file_for_line(filename, str)
  match = false

  File.open(File.join(destination_root, filename)) do |f|
    f.each_line do |line|
      if line =~ /(#{Regexp.escape(str)})/mi
        match = line
      end
    end
  end
  match
end
remove_api_only_declaration() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 76
def remove_api_only_declaration
  fname = "config/application.rb"

  if File.exist?(File.join(destination_root, fname))
    gsub_file 'config/application.rb', 'config.api_only = true', ''
  else
    say_status("skipped", "application.rb not found")
  end
end
require_sprockets_railtie() click to toggle source
# File lib/generators/client_manager/install_generator.rb, line 66
def require_sprockets_railtie
  fname = "config/application.rb"

  if File.exist?(File.join(destination_root, fname))
    gsub_file 'config/application.rb', '# require "sprockets/railtie"', 'require "sprockets/railtie"'
  else
    say_status("skipped", "application.rb not found, cannot add sprockets")
  end
end