Вы можете проанализировать его как JSON и затем извлечь подстроку из ответа (при условии, что он всегда отвечает в одном и том же формате):
require 'json'
...
bs_csv_download = page.link_with(:text => 'Download CSV')
json_response = JSON.parse(bs_csv_download)
direct_link = json_response["message"][20..-1]
mechanize.get(direct_link).save('file.csv')
Мы получаем 20-й символ в значении "message"с [20..-1]
(-1 означает до конца строки).