Here's a Ruby solution for the problem:

```
def search_insert(nums, target)
  low, high = 0, nums.length - 1
  
  while low <= high
    mid = (low + high) / 2
    if nums[mid] == target
      return mid
    elsif nums[mid] < target
      low = mid + 1
    else
      high = mid - 1
    end
  end
  
  return low
end
```
Scrivi una soluzione Ruby per questo problema: Dato un array ordinato di numeri interi distinti e un valore obiettivo, restituisci l'indice se l'obiettivo viene trovato. In caso contrario, restituire l'indice dove sarebbe se fosse inserito in ordine. È necessario scrivere un algoritmo con complessità di runtime O(log n).