Goliath と Grape を使用して非常に単純な Web サービスを作成しようとしています。私のサービスが行うことは、画像パスとターゲット ディメンションが与えられると、画像の新しいジオメトリを返すことだけです。画像は、Web サービスのホストと同じサーバーに保存されます。
だから私はグレープ内にこのコードを持っています:
# some Grape code omitted
get "/" do
EM.defer {
image = Magick::Image.read('path to image').first
image.change_geometry('3000x3900') do |cols, row, img|
return {width: cols, height: row}
end
}
end
ブラウザでエンドポイントにアクセスすると、取得できるのはこの文字列だけです
"#<ConditionVariable:0x007ffd9de1f6e8>"
EM.defer がないと、次の json が返されますが、リクエスト/秒は非常に低くなります (約 4 リクエスト/秒)。
{width: 'new width', height: 'new heigth'}
Rmagick 操作をブロックしないようにして、結果を返すようにするにはどうすればよいですか?