spring不起作用。

我无法运行Spring。 这是错误日志。

myid-no-MacBook-Pro:myid$ spring /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:17:in `fiddle_func': uninitialized constant Spring::SID::DL (NameError) from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:30:in `sid' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:39:in `pgid' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/server.rb:76:in `set_pgid' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/server.rb:33:in `boot' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/server.rb:19:in `boot' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:33:in `block in boot_server' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:31:in `fork' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:31:in `boot_server' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:16:in `call' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/command.rb:7:in `call' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client.rb:23:in `run' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/bin/spring:6:in `' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/spring:19:in `load' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/spring:19:in `' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/ruby_executable_hooks:15:in `eval' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/ruby_executable_hooks:15:in `' ^C/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:35:in `sleep': Interrupt from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:35:in `boot_server' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/run.rb:16:in `call' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client/command.rb:7:in `call' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/client.rb:23:in `run' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/bin/spring:6:in `' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/spring:19:in `load' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/spring:19:in `' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/ruby_executable_hooks:15:in `eval' from /Users/myid/.rbenv/versions/1.9.3-p484/bin/ruby_executable_hooks:15:in `' 

我用:

  • Ruby 1.9.3-p484
  • Rails3.2.17
  • spring0.0.10
  • OSX 10.9
  • rbenv

我尝试了其他一些测试。 我认为这个问题具体是1.9.3。

 myid-no-MacBook-Pro:~ myid$ ruby -v ruby 1.9.2p326 (2013-12-23 revision 44353) [x86_64-darwin13.1.0] myid-no-MacBook-Pro:~ myid$ irb irb(main):001:0> require 'fiddle' => true irb(main):002:0> DL => DL irb(main):003:0> require 'dl' => false irb(main):004:0> DL => DL irb(main):005:0> DL.fiddle? => true irb(main):006:0> exit myid-no-MacBook-Pro:~ myid$ rbenv global 1.9.3-p484 myid-no-MacBook-Pro:~ myid$ irb irb(main):001:0> require 'fiddle' LoadError: cannot load such file -- dl from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/fiddle.rb:4:in `' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from (irb):1 from /Users/myid/.rbenv/versions/1.9.3-p484/bin/irb:12:in `' irb(main):002:0> DL NameError: uninitialized constant DL from (irb):2 from /Users/myid/.rbenv/versions/1.9.3-p484/bin/irb:12:in `' irb(main):003:0> require 'dl' LoadError: cannot load such file -- dl from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from (irb):3 from /Users/myid/.rbenv/versions/1.9.3-p484/bin/irb:12:in `' irb(main):004:0> exit myid-no-MacBook-Pro:~ myid$ rbenv global 2.1.0 myid-no-MacBook-Pro:~ myid$ irb irb(main):001:0> require 'fiddle' => true irb(main):002:0> DL NameError: uninitialized constant DL from (irb):2 from /Users/myid/.rbenv/versions/2.1.0/bin/irb:11:in `' irb(main):003:0> require 'dl' DL is deprecated, please use Fiddle => true irb(main):004:0> DL => DL irb(main):005:0> DL.fiddle? => true irb(main):006:0> 

如果更改C编译器无法解决您的问题,这个补丁帮助了我: https : //github.com/pigoz/spring/commit/11804d2fd3dce75e9b236666739cdf5b40934abd

只需在系统上找到该文件(通过bundle show spring找到bundle show spring )并手动进行更改。

我找到了解决方案。

在我的情况下,将c编译器从clang更改为apple-gcc42后效果很好。 这是我使用的命令。

 $ rbenv uninstall 1.9.3-p484 $ which gcc-4.2 /usr/local/bin/gcc-4.2 $ CC=/usr/local/bin/gcc-4.2 $ rbenv install 1.9.3-p484 $ rbenv rehash 

相关链接: https : //github.com/rails/spring/issues/274

此问题似乎仅限于使用Apple提供的编译器在Mac上编译的一系列Ruby 1.9.3补丁级别。

  • Ruby 1.9.3-p125,与Apple的LLVM,Spring 1.1.3一起编译,可以工作
  • Ruby 1.9.3-p547(编写本文时最新稳定版),LLVM,Spring 1.1.3 – 失败。

我在最新稳定的LLVM上有几个后来的Ruby补丁(2.0,2.1.2)。 他们工作。

因此,在1.9.3系列的某些时候,在p125之后,Spring在使用LLVM时停止工作。 在某些时候,至少2.0.0-p481,后来的Ruby版本和次要版本,以及小版本,再次使用LLVM开始工作。 IOW,这看起来像Ruby 1.9.3回归问题,可能是Ruby 2.0.0回归问题。 我已经记录了我在Github上发现的Spring问题。

现在,如果你需要1.9.3并且你需要Mac上的Spring …考虑Zeus。 ;)