Чаму не будзе Rails 4 дэўсталёўваць?

Пасля выдалення Rails 4 (RC1) Я ўсё яшчэ атрымліваю Rails 4 прыкладання, створаныя з дапамогай Рэйкі новы .

➲ rails -v
Rails 4.0.0.rc1
➲ which rails
/Users/brandon/.rvm/gems/ruby-1.9.3-p392/bin/rails
➲ gem uninstall rails

Select gem to uninstall:
 1. rails-3.2.13
 2. rails-3.2.3
 3. All versions
> 

Што самы чысты спосаб выправіць гэта?

6
так, але я адцягнуўся іншая праблема ... Я павінен быў нешта пісаў у бліжэйшы час ...
дададзена аўтар iconoclast, крыніца
так, але я адцягнуўся іншая праблема ... Я павінен быў нешта пісаў у бліжэйшы час ...
дададзена аўтар iconoclast, крыніца
@zeantsoi: больш поўны адказ адказваў.
дададзена аўтар iconoclast, крыніца
@zeantsoi: больш поўны адказ адказваў.
дададзена аўтар iconoclast, крыніца
Любое абнаўленне на гэты конт? Вы атрымалі тое вырашыць?
дададзена аўтар zeantsoi, крыніца

10 адказы

Гэта даволі лёгка.

gem uninstall rails -v=4.0.0.rc1
gem uninstall railties
gem install rails -v 3.2.13
gem update --system
rails -v

З дапамогай каманды вышэй, я быў у стане ўсталяваць больш старую версію рэек па меры неабходнасці :)

10
дададзена
Ключавым момантам тут з'яўляецца выдаленне Railties, які я ўжо паказваў, як і іншыя. Калі ў вас ёсць спосаб выдаліць усе, што было ўстаноўлена з рэек у адной камандзе, гэта было б карысна. Нешта накшталт камень дэўсталёўваць рэйкі --with-залежнасцяў -v = 4.0.0.rc1 . Але няма новай інфармацыі ў гэтым адказе.
дададзена аўтар iconoclast, крыніца
Працаваў для мяне пры пераходзе ад рэек 4,0 да 3,2
дададзена аўтар CoderPug, крыніца

Гэта даволі лёгка.

gem uninstall rails -v=4.0.0.rc1
gem uninstall railties
gem install rails -v 3.2.13
gem update --system
rails -v

З дапамогай каманды вышэй, я быў у стане ўсталяваць больш старую версію рэек па меры неабходнасці :)

10
дададзена
Ключавым момантам тут з'яўляецца выдаленне Railties, які я ўжо паказваў, як і іншыя. Калі ў вас ёсць спосаб выдаліць усе, што было ўстаноўлена з рэек у адной камандзе, гэта было б карысна. Нешта накшталт камень дэўсталёўваць рэйкі --with-залежнасцяў -v = 4.0.0.rc1 . Але няма новай інфармацыі ў гэтым адказе.
дададзена аўтар iconoclast, крыніца
Працаваў для мяне пры пераходзе ад рэек 4,0 да 3,2
дададзена аўтар CoderPug, крыніца

Паспрабуйце пазначыць сваю ўсталяваную версію:

gem uninstall rails -v=4.0.0.rc1

EDIT:

Калі вы ўжо выдалілі (якія ў вас ёсць), павінна працаваць:

gem update --system
rails _3.2.2_ new app_name # or whatever version you're on
2
дададзена
гэта ўжо выдаленае.
дададзена аўтар iconoclast, крыніца

Паспрабуйце пазначыць сваю ўсталяваную версію:

gem uninstall rails -v=4.0.0.rc1

EDIT:

Калі вы ўжо выдалілі (якія ў вас ёсць), павінна працаваць:

gem update --system
rails _3.2.2_ new app_name # or whatever version you're on
2
дададзена
гэта ўжо выдаленае.
дададзена аўтар iconoclast, крыніца

Рэйкі не прыходзіць як пакет усё-у-адным. У вас ёсць база Rails камень, плюс гэта шмат залежнасцяў:

  • Action Mailer
  • Action Pack
  • Active Record
  • Active Resource
  • Active Support
  • Bundler
  • Railties <---- (contains generators)
  • Sprockets adapter for Rails

Для таго, каб пазбавіцца ад Rails 4 ўстаноўкі ў цэлым, вы павінны выдаліць усе з гэтых каштоўных камянёў.

Самы просты спосаб зрабіць гэта <�моцны> выдаліць усю тэчку вашай каштоўны камень , а затым пераўсталяваць ўсе, што вам трэба.

2
дададзена
Вядома, гэта вялікая колькасць каштоўных камянёў, але я неяк легкадумна лічыць, дэўсталёўка будзе дастаткова, каб справіцца з гэтым выпадкам выкарыстання разумнай, але, відавочна, няма. Паколькі гэтыя залежнасці <�я> проста іншыя каштоўныя камяні , каб RubyGems, а не як-то спецыфічна часткі Rails, ён ставіцца да іх так жа, як ён будзе ставіцца да любой іншай залежнасці ....
дададзена аўтар iconoclast, крыніца
Так, <�б> выдаліць усю тэчку гем працуе для мяне ...
дададзена аўтар Marslo, крыніца
На самай справе, судо камень ачысткі дапаможа вам выдаліць усе залежнасці. Тым не менш, гэта не працуе для мяне, шмат залежнасцяў няправільна, нават калі пасля таго, як я паўторна ўсталяваць старую версію
дададзена аўтар Marslo, крыніца

Рэйкі не прыходзіць як пакет усё-у-адным. У вас ёсць база Rails камень, плюс гэта шмат залежнасцяў:

  • Action Mailer
  • Action Pack
  • Active Record
  • Active Resource
  • Active Support
  • Bundler
  • Railties <---- (contains generators)
  • Sprockets adapter for Rails

Для таго, каб пазбавіцца ад Rails 4 ўстаноўкі ў цэлым, вы павінны выдаліць усе з гэтых каштоўных камянёў.

Самы просты спосаб зрабіць гэта <�моцны> выдаліць усю тэчку вашай каштоўны камень , а затым пераўсталяваць ўсе, што вам трэба.

2
дададзена
Вядома, гэта вялікая колькасць каштоўных камянёў, але я неяк легкадумна лічыць, дэўсталёўка будзе дастаткова, каб справіцца з гэтым выпадкам выкарыстання разумнай, але, відавочна, няма. Паколькі гэтыя залежнасці <�я> проста іншыя каштоўныя камяні , каб RubyGems, а не як-то спецыфічна часткі Rails, ён ставіцца да іх так жа, як ён будзе ставіцца да любой іншай залежнасці ....
дададзена аўтар iconoclast, крыніца
На самай справе, судо камень ачысткі дапаможа вам выдаліць усе залежнасці. Тым не менш, гэта не працуе для мяне, шмат залежнасцяў няправільна, нават калі пасля таго, як я паўторна ўсталяваць старую версію
дададзена аўтар Marslo, крыніца
Так, <�б> выдаліць усю тэчку гем працуе для мяне ...
дададзена аўтар Marslo, крыніца

TL; DR:

Самае простае і бяспечнае рашэнне для непасрэднай задачы

gem uninstall railties

Slightly Longer & More Complete Approach

Калі вы хочаце, каб выдаліць усе, што каштоўны камень ўсталяваць рэйкі усталяваны, вы можаце атрымаць спіс каманд для запуску з гэтым:

gem dependency rails --pipe | ruby -ne 'puts $_.gsub(/\([0-9\. <>=~,]*\)/,"")' | ruby -ne 'puts "gem uninstall #{$_}"'

Скапіруйце гэтыя і запусціць іх адзін за адным, і для кожнага з вас скажуць, што яшчэ залежыць ад яго, і спытаў, калі вы хочаце, каб ісці наперад з дэўсталёўку. Калі вы бачыце што-небудзь у спісе, які не з'яўляецца часткай рэек (скажам, вы ўсталявалі нешта іншае, што неабходна, што версія active_record ), а затым пакінуць яго, у адваротным выпадку ісці наперад і выдаліць.


Чым даўжэй тлумачэнне

Індыцыраваць узяты з версіі Railties каштоўны камень, які не выдаляецца пры дэўсталёўкі рэйкі каштоўны камень.

Калі адкрыць рэйкі выкананым

vim `which rails`

(Або эквівалент з рэдактарам па вашаму выбару) вы ўбачыце код у ніжняй частцы, якая вырашае, якую версію рэек для выкарыстання на аснове версіі Railties :

#!/usr/bin/env ruby_noexec_wrapper
#
# This file was generated by RubyGems.
#
# The application 'railties' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/
    version = $1
    ARGV.shift
  end
end

gem 'railties', version
load Gem.bin_path('railties', 'rails', version)

Самае простае рашэнне, такім чынам, проста каштоўны камень ўсталяваць railsties . Там няма рашэння убудаванага ў RubyGems (што я магу знайсці), якія будуць вызначаць, якія былі ўсталяваныя іншыя каштоўныя камяні з рэйкамі <�моцны> і больш не выкарыстоўваецца ўсё астатнім і выдаліць іх. RubyGems не мае ідэю выключнай залежнасці, так што нават калі нічога іншага, акрамя рэйках выкарыстоўвае Railties , вы ўсё яшчэ затрымаліся таго, каб ведаць, што ён (і некалькі іншых рэчаў ) пакінутыя зноў і павінны быць выдаленыя ўручную. Гэта не ідэальна, але гэта тое, што мы атрымалі прама зараз, і гэта не так ужо дрэнна, асабліва калі вы карыстаецеся рашэнне вышэй, каб знайсці і выдаліць усе рэйкі залежнасцяў.

1
дададзена

TL; DR:

Самае простае і бяспечнае рашэнне для непасрэднай задачы

gem uninstall railties

Slightly Longer & More Complete Approach

Калі вы хочаце, каб выдаліць усе, што каштоўны камень ўсталяваць рэйкі усталяваны, вы можаце атрымаць спіс каманд для запуску з гэтым:

gem dependency rails --pipe | ruby -ne 'puts $_.gsub(/\([0-9\. <>=~,]*\)/,"")' | ruby -ne 'puts "gem uninstall #{$_}"'

Скапіруйце гэтыя і запусціць іх адзін за адным, і для кожнага з вас скажуць, што яшчэ залежыць ад яго, і спытаў, калі вы хочаце, каб ісці наперад з дэўсталёўку. Калі вы бачыце што-небудзь у спісе, які не з'яўляецца часткай рэек (скажам, вы ўсталявалі нешта іншае, што неабходна, што версія active_record ), а затым пакінуць яго, у адваротным выпадку ісці наперад і выдаліць.


Чым даўжэй тлумачэнне

Індыцыраваць узяты з версіі Railties каштоўны камень, які не выдаляецца пры дэўсталёўкі рэйкі каштоўны камень.

Калі адкрыць рэйкі выкананым

vim `which rails`

(Або эквівалент з рэдактарам па вашаму выбару) вы ўбачыце код у ніжняй частцы, якая вырашае, якую версію рэек для выкарыстання на аснове версіі Railties :

#!/usr/bin/env ruby_noexec_wrapper
#
# This file was generated by RubyGems.
#
# The application 'railties' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/
    version = $1
    ARGV.shift
  end
end

gem 'railties', version
load Gem.bin_path('railties', 'rails', version)

Самае простае рашэнне, такім чынам, проста каштоўны камень ўсталяваць railsties . Там няма рашэння убудаванага ў RubyGems (што я магу знайсці), якія будуць вызначаць, якія былі ўсталяваныя іншыя каштоўныя камяні з рэйкамі <�моцны> і больш не выкарыстоўваецца ўсё астатнім і выдаліць іх. RubyGems не мае ідэю выключнай залежнасці, так што нават калі нічога іншага, акрамя рэйках выкарыстоўвае Railties , вы ўсё яшчэ затрымаліся таго, каб ведаць, што ён (і некалькі іншых рэчаў ) пакінутыя зноў і павінны быць выдаленыя ўручную. Гэта не ідэальна, але гэта тое, што мы атрымалі прама зараз, і гэта не так ужо дрэнна, асабліва калі вы карыстаецеся рашэнне вышэй, каб знайсці і выдаліць усе рэйкі залежнасцяў.

1
дададзена

На шчасце, гэта працавала як простае выпраўленне для мяне:

Калі ласка, звярніце ўвагу, што для таго, каб перакласьці назад у 3.2.13 (або любой іншай версіі вы хацелі б вярнуцца), вы павінны выдаліць Railties, а таксама Rails.

Проста зрабіце:

<�Код> каштоўны камень дэўсталёўваць рэйкі

Затым выберыце версію Rails 4 ў вас ёсць і выдаліць яго.

Затым, зрабіце наступнае:

<�Код> каштоўны камень дэўсталёўваць Railties

І рабіць тое ж самае.

Калі я выдаліў рэйкі 4 версіі Railties, ён сказаў мне, што залежнасці для пары каштоўных камянёў (кава-рэек і Sass рэек) не будзе выкананы. Так што я проста зрабіў тое ж самае з абодвума з іх, як я зрабіў вышэй (напрыклад, каштоўны камень дэўсталёўваць SASS рэйкі ), і выдаляць іх Rails 4 версіі, а таксама. Напрыклад, для Sass рэек, у мяне была версія ўстаноўлена пад назвай Сасс-рэйкі-4.0.0.rc1, таму я выдаліў гэтую версію).

І гэта ўсё; тэрмінал будзе спіс 3.2.13 ў якасці бягучай версіі Rails, і новыя прыкладання будуць генеравацца з гэтай версіі.

1
дададзена
так, я зрабіў гэта, але ён не атрымлівае ўсё дрэва залежнасцяў, і гэта ручной працэс. Гэта таксама не з'яўляецца агульным рашэннем. Яна працуе на рэйкі да тых часоў, як вы ведаеце, што Railties з'яўляецца адным з ключавых пунктаў неабходна выдаліць, але яна не працуе для чаго-небудзь яшчэ.
дададзена аўтар iconoclast, крыніца
Гэты працэс працаваў для сябе і некалькіх іншых, якія я ведаю, але я думаю, не для вас. Я дам вам ведаць, калі я чую іншае рашэнне. Вашы нядаўна сфармаваныя прыкладання яшчэ ў Rails 4, і/або вы зрабілі якой-небудзь прагрэс у вашай праблеме?
дададзена аўтар CodeBiker, крыніца

На шчасце, гэта працавала як простае выпраўленне для мяне:

Калі ласка, звярніце ўвагу, што для таго, каб перакласьці назад у 3.2.13 (або любой іншай версіі вы хацелі б вярнуцца), вы павінны выдаліць Railties, а таксама Rails.

Проста зрабіце:

<�Код> каштоўны камень дэўсталёўваць рэйкі

Затым выберыце версію Rails 4 ў вас ёсць і выдаліць яго.

Затым, зрабіце наступнае:

<�Код> каштоўны камень дэўсталёўваць Railties

І рабіць тое ж самае.

Калі я выдаліў рэйкі 4 версіі Railties, ён сказаў мне, што залежнасці для пары каштоўных камянёў (кава-рэек і Sass рэек) не будзе выкананы. Так што я проста зрабіў тое ж самае з абодвума з іх, як я зрабіў вышэй (напрыклад, каштоўны камень дэўсталёўваць SASS рэйкі ), і выдаляць іх Rails 4 версіі, а таксама. Напрыклад, для Sass рэек, у мяне была версія ўстаноўлена пад назвай Сасс-рэйкі-4.0.0.rc1, таму я выдаліў гэтую версію).

І гэта ўсё; тэрмінал будзе спіс 3.2.13 ў якасці бягучай версіі Rails, і новыя прыкладання будуць генеравацца з гэтай версіі.

1
дададзена
так, я зрабіў гэта, але ён не атрымлівае ўсё дрэва залежнасцяў, і гэта ручной працэс. Гэта таксама не з'яўляецца агульным рашэннем. Яна працуе на рэйкі да тых часоў, як вы ведаеце, што Railties з'яўляецца адным з ключавых пунктаў неабходна выдаліць, але яна не працуе для чаго-небудзь яшчэ.
дададзена аўтар iconoclast, крыніца
Гэты працэс працаваў для сябе і некалькіх іншых, якія я ведаю, але я думаю, не для вас. Я дам вам ведаць, калі я чую іншае рашэнне. Вашы нядаўна сфармаваныя прыкладання яшчэ ў Rails 4, і/або вы зрабілі якой-небудзь прагрэс у вашай праблеме?
дададзена аўтар CodeBiker, крыніца