Весна не работает. [неинициализированная константа Spring::SID::DL ]
Я не могу запустить весну. Вот журнал ошибок.
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>'
Я использую:
- Ruby 1.9.3-p484
- Rails3.2.17
- Весна 0.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 `<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>
3 ответа
Я нашел решение.
В моем случае после изменения компилятора 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
Если смена компилятора C не устранила вашу проблему, этот патч мне помог: https://github.com/pigoz/spring/commit/11804d2fd3dce75e9b236666739cdf5b40934abd
Просто найдите файл в вашей системе (найдите, где Spring установлен через bundle show spring
) и внесите изменения вручную.
Эта проблема, по-видимому, ограничена диапазоном уровней исправлений Ruby 1.9.3, скомпилированных на Mac с использованием поставляемого Apple компилятора.
- Работает Ruby 1.9.3-p125, скомпилированный с Apple LLVM, Spring 1.1.3
- Ruby 1.9.3-p547 (последняя стабильная на момент написания), LLVM, Spring 1.1.3 - не работает.
У меня есть пара более поздних патчей Ruby (2.0, 2.1.2) на последней стабильной версии, LLVM. Они работают.
Итак, в какой-то момент в серии 1.9.3 после p125 Spring перестает работать при использовании LLVM. В какой-то момент, по крайней мере 2.0.0-p481, более поздние версии Ruby и второстепенные версии, а также крошечные версии, снова начинают работать с LLVM. Итак, это похоже на проблему регрессии Ruby 1.9.3, возможно, проблему регрессии Ruby 2.0.0. Я задокументировал то, что нашел на Github, как проблему Spring.
Прямо сейчас, если вам нужен 1.9.3 и вам нужен Spring на Mac... подумайте о Zeus.;)