Почему я должен запускать "bundle exec spring", когда у меня есть binstub для бин / пружины?
При беге spring
напрямую (без bundle exec
) из командной строки ничего не происходит! Только при беге bundle exec spring
, оно работает:
$ spring status
$ bundle exec spring status
Spring is running:
21990 spring server | synaesthesia | started 1 min ago
22046 spring app | synaesthesia | started 43 secs ago | test mode
мой bin/spring
binstub выглядит так:
#!/usr/bin/env ruby
# This file loads spring without using Bundler, in order to be fast
# It gets overwritten when you run the `spring binstub` command
unless defined?(Spring)
require "rubygems"
require "bundler"
if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
ENV["GEM_HOME"] = ""
Gem.paths = ENV
gem "spring", match[1]
require "spring/binstub"
end
end
Это было исправлено весной делает bundle exec spring binstub --all
, Итак, я думаю, все настроено правильно? Так зачем мне bundle exec
все время?
Я использую Rails 4.0.4.
1 ответ
Оказалось, что я использовал определенную ветку на GitHub, поэтому REGEX, созданный весной в bin/spring
исполняемый файл не совпадает:
if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
Я изменил строку на следующее:
if match = Bundler.default_lockfile.read.match (/ ^ GEM | GIT $.? ^ spring ((.?)) $. *? ^ $ / m)
Теперь это работает. Хотя довольно странно, что по крайней мере не выдается какая-либо ошибка, когда регулярное выражение не совпадает?!
Обновить
Я добавил вопрос об этом в проекте GitHub Spring: https://github.com/rails/spring/issues/277