Ответ 1
Мне пришлось понизить до 1.6.2. Эти уведомления абсолютно нелепы. Они делают последнюю версию совершенно непригодной для использования. Там действительно должен быть способ отключить их, но до тех пор:
sudo gem update --system 1.6.2
Недавно я обновил обновления:
gem update --system
gem update
Теперь я прихожу с множеством предупреждений об устаревании каждый раз, когда я загружаю драгоценный камень. Например, rails console
:
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/user/.rvm/gems/[email protected]/specifications/rake-0.8.7.gemspec:10.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/user/.rvm/gems/[email protected]/specifications/rake-0.8.7.gemspec:10.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from /Users/user/.rvm/gems/[email protected]/specifications/rake-0.8.7.gemspec:10.
Loading development environment (Rails 3.0.7)
ruby-1.9.2-p180 :001 > exit
Я использую RVM, Ruby 1.9.2 и Rubygems 1.8.1. Любой способ обойти эту проблему? Возвратитесь к более ранней версии rubygems?
Мне пришлось понизить до 1.6.2. Эти уведомления абсолютно нелепы. Они делают последнюю версию совершенно непригодной для использования. Там действительно должен быть способ отключить их, но до тех пор:
sudo gem update --system 1.6.2
см. здесь http://ryenus.tumblr.com/post/5450167670/eliminate-rubygems-deprecation-warnings
для краткости, запустите
gem pristine --all --no-extensions
ruby -e "`gem -v 2>&1 | grep called | sed -r -e 's#^.*specifications/##' -e 's/-[0-9].*$//'`.split.each {|x| `gem pristine #{x} -- --build-arg`}"
если backtick (или backquote) не работает для вас, поскольку в некоторых случаях @jari-jokinen указал (спасибо!), замените вторую строку на
ruby -e "%x(gem -v 2>&1 | grep called | sed -r -e 's#^.*specifications/##' -e 's/-[0-9].*$//').split.each {|x| %x(gem pristine #{x} -- --build-arg)}"
Примечание.. Если вы используете Bundler в производственной среде, ваши оскорбительные камни будут кэшированы для совместного использования/комплекта, поэтому вам нужно будет запускать эти команды с помощью пакета exec
Вы также можете использовать больше RVM rvm rubygems current
, чтобы вернуться к более безопасной версии драгоценного камня (1.6.2 прямо сейчас).
Я взял ответы других людей и закрепил их в чем-то более подходящем для меня. Мне все же пришлось удалить пару вручную из /usr/local/cellar.
#!/usr/bin/env bash
#
brew install gnu-sed
sudo gem pristine --all --no-extensions
gems=$(gem -v 2>&1 | grep called | gsed -r -e 's#^.*specifications/##' -e 's/-[0-9].*$//')
for gem in $gems
do
echo Fixing $gem...
sudo gem pristine $gem -- -build-arg
done
Установка rubygems версии 1.8.4 избавляет от предупреждений об отказе от gem spec:
$gem update --system
=== 1.8.4/2011-05-25
1 незначительное улучшение:
Запустить эту команду sudo gem pristine - all --no-extensions
чтобы удалить все эти предупреждающие сообщения.
Упрощение: добавьте следующее в environment.rb
ActiveSupport::Deprecation.silenced = true
Похоже, вы в порядке. Это просто предупреждение, в котором rake-0.8.7.gemspec не будет соответствовать новому стандарту RubyGems.
Я уверен, что создатель rake получит эту синхронизацию.
Я могу подтвердить, что 1.8.10 удалил эти предупреждения об устаревании в среде Rails 3.1.
Просто запустите
gem update --system
SlimGems также может быть решением.
Используйте это, любезно предоставлено gmarik gist:
.bashrc:
if [ -d "$HOME/.ruby/lib/" ]; then
RUBYLIB="$RUBYLIB:$HOME/.ruby/lib"
RUBYOPT="-rno_deprecation_warnings_kthxbye"
export RUBYLIB RUBYOPT
fi
~/.ruby/lib/no_deprecation_warnings_kthxbye.rb
begin
require 'rubygems'
Gem::Deprecate.skip = true if defined?(Gem::Deprecate)
rescue LoadError => e
p e
end
Используйте его, когда:
$RUBYLIB
, потому что ваша IDE игнорирует его при выполнении модульных тестовИзменить rubygems/deprecate.rb
:
def self.skip # :nodoc:
@skip ||= true
end