Sinatraでファイルをダウンロードさせる方法

attachment を使うと簡単にファイルをダウンロードさせることができる。例えば、CSVファイルをダウンロードする場合は次のように書ける。

require 'rubygems'
require 'sinatra'

get '/test.csv' do
  content_type 'text/csv'
  attachment 'test.csv'
  <<-EOS
foo,bar,baz
hoge,fuga,piyo
  EOS
end

こうのようなお役立ちメソッドは sinatra/lib/sinatra/base.rb の Helpers モジュールで定義されているので、こんなのあるかな?と思ったときには覗いてみるのもいいかも。