Edited at

spring を 1.7.0 にアップデートしたら rails c が応答しなくなった話

More than 3 years have passed since last update.

こんな問題が起きるのは自分の環境だけな気がしますが、最終的に以下の環境変数を指定したら応答してくれる様になりました。

export SPRING_SERVER_COMMAND="spring server --background"

spring server は 1.7.0 から追加されたサブコマンドです。デフォルトでは以下の様にバージョン番号を引数に与えますが、自分の環境ではこのバージョン番号付きで実行する事ができませんでした。


spring-1.7.0/lib/spring/env.rb

    def server_command

ENV["SPRING_SERVER_COMMAND"] || "spring _#{Spring::VERSION}_ server --background"
end

$ bundle exec spring _1.7.0_ server

Version: 1.7.0

Usage: spring COMMAND [ARGS]

Commands for spring itself:

binstub Generate spring based binstubs. Use --all to generate a binstub for all known commands. Use --remove to revert.
help Print available commands.
server Explicitly start a Spring server in the foreground
status Show current status.
stop Stop all spring processes for this project.

Commands for your application:

rails Run a rails command. The following sub commands will use spring: console, runner, generate, destroy, test.
rake Runs the rake command
rspec Runs the rspec command

CircleCI では問題なく実行出来ていたので、自分の環境が悪いと思っているのですが、理由はよく分かっていません。


追記:はやくも v1.7.1 がリリースされていた件

特に、自分の環境で問題になっていたバージョン指定引数が取り下げられている点が注目どころ。


lib/spring/env.rb

    def server_command

ENV["SPRING_SERVER_COMMAND"] || "#{File.expand_path("../../../bin/spring", __FILE__)} server --background"
end

おかげさまで、環境変数を設定せずとも問題なく起動する様になりました。