简体   繁体   English

春天不起作用。 [未初始化的常量Spring :: SID :: DL]

[英]Spring doesn't work. [ uninitialized constant Spring::SID::DL ]

I Can't run Spring. 我无法运行Spring。 Here is the error log. 这是错误日志。

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 `<top (required)>'
  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 `<main>'
  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 `<main>'
^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 `<top (required)>'
  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 `<main>'
  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 `<main>'

I use: 我用:

  • Ruby 1.9.3-p484 Ruby 1.9.3-p484
  • Rails3.2.17 Rails3.2.17
  • Spring 0.0.10 春天0.0.10
  • OSX 10.9 OSX 10.9
  • rbenv rbenv

I tried some other tests. 我尝试了其他一些测试。 I think this problem is 1.9.3 specific. 我认为这个问题具体是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 `<top (required)>'
  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 `<main>'
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 `<main>'
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 `<main>'
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 `<main>'
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> 

If changing the C compiler does not fix your issue this patch helped me: https://github.com/pigoz/spring/commit/11804d2fd3dce75e9b236666739cdf5b40934abd 如果更改C编译器无法解决您的问题,这个补丁帮助了我: https//github.com/pigoz/spring/commit/11804d2fd3dce75e9b236666739cdf5b40934abd

Simply locate the file on your system (find where spring is installed via bundle show spring ) and manually make the change. 只需在您的系统上找到该文件(通过bundle show spring找到bundle show spring )并手动进行更改。

I found out a solution. 我找到了解决方案。

In my case, after changing the c compiler from clang to apple-gcc42 worked perfectly. 在我的情况下,将c编译器从clang更改为apple-gcc42后效果很好。 Here are the commands I used. 这是我使用的命令。

$ 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

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

This problem appears to be limited to a range of Ruby 1.9.3 patch levels, compiled on a Mac, using the Apple supplied compiler. 此问题似乎仅限于使用Apple提供的编译器在Mac上编译的一系列Ruby 1.9.3补丁级别。

  • Ruby 1.9.3-p125, compiled with Apple's LLVM, Spring 1.1.3, works Ruby 1.9.3-p125,使用Apple的LLVM,Spring 1.1.3编译,可以工作
  • Ruby 1.9.3-p547 (latest stable at time of writing), LLVM, Spring 1.1.3 - fails. Ruby 1.9.3-p547(编写本文时最新稳定版),LLVM,Spring 1.1.3 - 失败。

I have a couple of later patches of Ruby (2.0, 2.1.2) at latest stable, LLVM. 我在最新稳定的LLVM上有几个后来的Ruby补丁(2.0,2.1.2)。 They work. 他们工作。

So, at some point in the 1.9.3 series, after p125, Spring stops working when using LLVM. 因此,在1.9.3系列的某些时候,在p125之后,Spring在使用LLVM时停止工作。 At some point, at least 2.0.0-p481, later Ruby versions and minor versions, and tiny versions, start working again, with LLVM. 在某些时候,至少2.0.0-p481,后来的Ruby版本和次要版本,以及小版本,再次开始使用LLVM。 IOW, this looks like a Ruby 1.9.3 regression issue, possibly a Ruby 2.0.0 regression issue. IOW,这看起来像Ruby 1.9.3回归问题,可能是Ruby 2.0.0回归问题。 I've documented what I've found on Github as a Spring issue. 我已经记录了我在Github上发现的Spring问题。

Right now, if you need 1.9.3 and you need Spring on a Mac... consider Zeus. 现在,如果你需要1.9.3,你需要Mac上的Spring ...考虑Zeus。 ;) ;)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM