Ruby on rails “我为什么要跑?”;bundle exec spring“;我什么时候有垃圾桶/弹簧桶?

Ruby on rails “我为什么要跑?”;bundle exec spring“;我什么时候有垃圾桶/弹簧桶?,ruby-on-rails,spring-gem,Ruby On Rails,Spring Gem,从命令行直接运行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

从命令行直接运行
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
bin浴缸如下所示:

#!/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
spring通过执行
bundle exec-spring-binstub--all
对其进行了修补。所以我想一切都配置正确了?那么为什么我总是需要一个
bundle exec


我使用的是Rails 4.0.4。

结果表明我使用了github上的一个特定分支,因此spring在
bin/spring
可执行文件中创建的正则表达式不匹配:

  if match = Bundler.default_lockfile.read.match(/^GEM$.*?^    spring \((.*?)\)$.*?^$/m)
我将行更改为以下内容:

如果match=Bundler.default_lockfile.read.match(/^GEM | GIT$.?^spring((.?)$.*?^$/m)

现在它起作用了。但很奇怪,当正则表达式不匹配时,至少没有抛出一些错误

更新

我在GitHub Spring项目中添加了一个问题: