新手问题 [已解决] spring (Rails 4) 卡住不动,开代理也不行

swordray · 2014年03月30日 · 最后由 swordray 回复于 2014年04月06日 · 4069 次阅读

怀疑是网络问题,报错信息如下:

~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in `gets': Interrupt
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in `verify_server_version'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:19:in `call'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/command.rb:7:in `call'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/rails.rb:23:in `call'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/command.rb:7:in `call'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client.rb:26:in `run'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/bin/spring:48:in `<top (required)>'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/binstub.rb:11:in `load'
    from ~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/binstub.rb:11:in `<top (required)>'
    from ~/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from ~/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from ~/Sites/ihaveu/bin/spring:16:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

你还是什么新手啊。

spring 经常莫名卡住,我也碰到过,主要是跑 rspec 的时候。一个 hack 是不使用bin/spring。我把它改名bin/spring_tmp禁用了。

还有一个可能是同时开着 pry,然后在 pry 里面运行了一些跟数据库相关的命令,pry 把数据库锁住了,退出 pry 后测试就继续跑了。

#1 楼 @billy 我是小菜一个,Rails 4 才刚开始用,spring 这些新模块的代码还没看

看报错信息 verify_server_version gets 应该是请求远程文件,没查出来是什么

#1 楼 @billy 直接干掉 # gem 'spring' 就行了,但 spring 不是启动快么,省几秒时间

@swordray 不等同于直接禁用 spring,因为 install 之后有些命令就自动变成了带 spring 的,但好像有时和 bin/spring 有些冲突。具体原因我也没时间去弄明白。反正 hack 起了作用。

spring 还是有些坑的。它本质上是加载部分环境节约每次加载的时间。但有些改动,比如 model 的某些代码,和 Rails initialize 有关的代码等等不能反映在已经加载的环境中。需要手动 spring stop 然后再启动。

#4 楼 @billy 我想的就比较简单,绝大多数情况不会改 Rails 初始化,就可以用上 spring 加速;极少数情况改了初始化就 Ctrl-C UP ENTER 重启就行了

使用 spring 给你带来的麻烦远比给你带来的“省时间”要多

#6 楼 @hz_qiuyuanxin Rails 4 加上 spring 应该也是认可的,不知道是不是中国局域网的问题

我觉得至少 rails4.1 后用 spring 才会稳定

New Rails 4.1 applications will ship with "springified" binstubs. This means that bin/rails and bin/rake will automatically take advantage of preloaded spring environments.

#8 楼 @psvr DHH 的 Basecamp 已经在用了

解法是升级到 Rails 4.1.0.rc2

需要 登录 后方可回复, 如果你还没有账号请 注册新账号