Как указывает Мэтью в своем ответе, причиной может быть плагин. Он обнаружил, что attachment_fu является одной из причин. (Он может использовать Core Image для обработки изображений.) Создание файла в config/initializers
(для приложения Rails) с этой строкой отключит предупреждение, за счет необходимости использования одного из других процессоров изображений:
Technoweenie::AttachmentFu.default_processors.delete('CoreImage')
Это не проблема для меня; Я выполняю развертывание на серверах, отличных от Mac, и поскольку они не могут использовать CoreImage, я в любом случае хочу запустить то же самое во время разработки.
Если вы посмотрите на /System/Library/Frameworks/RubyCocoa.framework/Versions/A/Resources/ruby/osx/
objc/ruby_addition.rb
, это внизу файла:
class Thread
class << self
alias :pre_rubycocoa_new :new
# Override Thread.new to prevent threads being created if there isn't
# runtime support for it
def new(*args,&block)
unless defined? @_rubycocoa_threads_allowed then
# If user has explicilty disabled thread support, also disable the
# check (for debugging/testing only)
@_rubycocoa_threads_allowed = ENV['RUBYCOCOA_THREAD_HOOK_DISABLE'] ||
OSX::RBRuntime.isRubyThreadingSupported?
end
if !@_rubycocoa_threads_allowed then
warn "#{caller[0]}: Ruby threads cannot be used in RubyCocoa without patches to the Ruby interpreter"
end
pre_rubycocoa_new(*args,&block)
end
end
end
Итак, для начала мы получаем предупреждение, но затем он продолжает называть оригинал Thread.new
в любом случае. Я не верю, что это предупреждение является реальной проблемой. Просто раздражает постоянно видеть это в консоли.
Если вы хотите отследить, что тянет в патче обезьяны, до Thread
, grep для чего-то, что вытягивает osx/cocoa
:
$ irb
>> Thread.new { puts 'hi' }
hi=> #<Thread:0x1011328e0 run>
>> require 'osx/cocoa'
=> true
>> Thread.new { puts 'hi' }
(irb):3:in `irb_binding': Ruby threads cannot be used in RubyCocoa without patches to the Ruby interpreter
hi=> #<Thread:0x103bf76e8 run>