0

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 操作をブロックしないようにして、結果を返すようにするにはどうすればよいですか?

4

1 に答える 1