Почему я должен запускать "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

Другие вопросы по тегам