Applicat/rails_info

View on GitHub
app/controllers/rails_info/version_control/diffs_controller.rb

Summary

Maintainability
A
35 mins
Test Coverage
class RailsInfo::VersionControl::DiffsController < RailsInfoController
  def new
    repository = Grit::Repo.new(params[:repository_path])

    diff = repository.diff(
      repository.commit(params[:rev_to]), repository.commit(params[:rev]), params[:path]
    )
    
    unless diff.length == 1
      raise NotImplementedError.new("Diff length != 1 but #{diff.length}")
    end
    
    render text: DiffToHtml::GitConverter.new.get_single_file_diff_body(diff.first.diff)
  rescue Exception => e
    if Rails.env.development?
      raise e.class.name + ': ' + e.message + ' ... ' + e.backtrace.join("\n")
    else
      logger.error e.class.name + ': ' + e.message + ' ... ' + e.backtrace.join("\n")
      render text: 'Internal server error.'
    end
  end
end