TL;DR
Resque 自体の問題ではなく、依存している Sinatra の問題だった。
Gemfile
に以下を加えると良い。
ただし、正式リリースではないので注意。
gem 'sinatra', '~> 2.0.0.rc2'
背景
Rails (5.0.2) で Resque::Server を使おうと Gemfile に以下を加えた。
gem 'resque', require: 'resque/server'
その状態で ./bin/setup
をすると以下のようなエラーが。
$ ./bin/setup
== Installing dependencies ==
The Gemfile's dependencies are satisfied
== Preparing database ==
rails aborted!
LoadError: cannot load such file -- rack/showexceptions
/Users/yuya/src/github.com/yuya-takeyama/resque-test/config/application.rb:7:in `<top (required)>'
/Users/yuya/src/github.com/yuya-takeyama/resque-test/Rakefile:4:in `require_relative'
/Users/yuya/src/github.com/yuya-takeyama/resque-test/Rakefile:4:in `<top (required)>'
/Users/yuya/src/github.com/yuya-takeyama/resque-test/bin/rails:9:in `require'
/Users/yuya/src/github.com/yuya-takeyama/resque-test/bin/rails:9:in `<top (required)>'
/Users/yuya/src/github.com/yuya-takeyama/resque-test/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
(See full trace by running task with --trace)
== Command ["bin/rails db:setup"] failed ==
rack/showexceptions
を読み込もうとしてエラーになるらしい。
どこで読み込もうとしているのか調べたら Resque::Server
が依存する Sinatra
だった。
Gemfile.lock
を確認するとバージョンは 1.0
だった。
さらに調べてみると以下の Sinatra の issue にたどり着く。
Incorrect rack requirement for showexceptions file
どうも Rack 2.0 以降は rack/showexceptions
が rack/show_exceptions
にリネームされているらしい。
Sinatra 2.0 以降はこの変更に追従しているものの、未だ正式リリースはされていないため、特に指定がなければ 1.0
がインストールされてしまい問題になる。