6

卸载 Rails 4(RC1) 后,我仍然会得到使用rails new.

➲ 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
> 

解决这个问题的最干净的方法是什么?

4

5 回答 5

10

这很容易。

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

通过使用上面的命令,我可以根据需要安装旧版本的 rails :)

于 2013-08-30T23:45:54.313 回答
2

尝试指定您安装的版本:

gem uninstall rails -v=4.0.0.rc1

编辑:

如果您已经卸载(已经卸载),则以下内容应该可以工作:

gem update --system
rails _3.2.2_ new app_name # or whatever version you're on
于 2013-06-04T04:28:15.703 回答
2

Rails 并不是一个多合一的软件包。你有一个基础的 Rails gem,还有很多依赖项:

  • 动作邮件程序
  • 行动包
  • 活动记录
  • 活动资​​源
  • 积极支持
  • 捆绑器
  • Railties <----(包含生成器)
  • 用于导轨的链轮适配器

要从整体上摆脱 Rails 4 安装,您必须删除所有这些 gem。

最简单的方法是删除整个 gem 文件夹,然后重新安装您需要的任何东西。

于 2013-06-04T04:40:59.673 回答
1

TL;博士:

解决眼前问题的最简单和最安全的方法是

gem uninstall railties

略长且更完整的方法

如果要卸载gem install rails已安装的所有内容,可以获取要运行的命令列表:

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

复制它们并一个接一个地运行它们,对于每一个,您都会被告知还有什么依赖于它,并询问您是否要继续卸载。如果您在列表中看到任何不属于 rails 的内容(假设您已经安装了需要该版本的其他东西active_record),请离开它,否则继续卸载。


更长的解释

显示的版本取自railtiesgem的版本,不是通过卸载railsgem来卸载的。

如果你打开rails可执行文件

vim `which rails`

(或您选择的编辑器的等效项)您将在底部看到代码,该代码根据以下版本决定使用哪个版本的 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)

因此,最简单的解决方案就是gem install railsties. RubyGems(我可以找到)没有内置的解决方案可以检测哪些其他 gem 安装了 rails并且不再被其他任何东西使用并卸载它们。RubyGems 没有独占依赖的概念,所以即使除了railsuses之外没有别的东西railties,你仍然不得不知道它(和其他一些东西)是遗留下来的,必须手动卸载。这并不理想,但这是我们现在所拥有的,而且还不错,尤其是如果您使用上面的解决方案来查找并删除所有 rails 依赖项。

于 2013-06-04T04:29:47.833 回答
1

幸运的是,这对我来说是一个简单的修复:

请注意,为了切换回 3.2.13(或您想返回的任何版本),您必须删除 Railties 以及 Rails。

做就是了:

gem uninstall rails

然后,选择您拥有的 Rails 4 版本并将其删除。

然后做:

gem uninstall railties

并做同样的事情。

当我卸载 Rails 的 Rails 4 版本时,它告诉我不会满足几个 gem(coffee-rails 和 sass-rails)的依赖关系。所以我只是对他们两个做了同样的事情,就像我在上面所做的一样(例如,gem uninstall sass-rails),并且也删除了他们的 Rails 4 版本。例如,对于 sass-rails,我安装了一个名为 sass-rails-4.0.0.rc1 的版本,所以我卸载了那个版本)。

就是这样;终端会将 3.2.13 列为您当前的 Rails 版本,并且也将从该版本生成新的应用程序。

于 2013-07-03T05:32:25.673 回答