首页 > 解决方案 > 安装和运行 rails 困难(/usr/local/bin/rails:没有这样的文件或目录),曾经恢复到早期的 rails 版本

问题描述

在我将 rails 放回早期版本的项目之后,在做 rails new blah 时出错

rails 工作正常,我可以rails new blah

我想测试一个项目的更改 rails 版本。到目前为止,我的经验是更改项目的 rails 版本不会在全球范围内更改 rails!所以我的经验是,当 CD 出目录并做时rails -v,我仍然在 5.2.2.1

所以我做了一个项目,旨在推回rails 0.8.0(只是作为一个测试!)

~/rubymac/test16$ cat Gemfile | grep "^gem 'rails'"
gem 'rails', '0.8.0'
~/rubymac/test16$ 

我做到了bundle update rails

并且没有错误,我在 Gemfile.lock 中看到似乎在那里指定了 rails 0.8.0 ,所以我猜它工作得那么远。

然后我确实cd ..并且确实rails -v期望(仍然)看到rails 5.2.2.1,这是我过去将项目放回稍早版本的rails时的经验。但是rails -v没有用。也rails new blah123没有工作。

~/rubymac$ rails -v
(in /usr/local/lib/ruby/gems/2.5.0/gems/rails-0.8.0)
rake aborted!
LoadError: cannot load such file -- rake/rdoctask
/usr/local/lib/ruby/gems/2.5.0/gems/rails-0.8.0/Rakefile:3:in `<top (required)>'
/usr/local/lib/ruby/gems/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)
~/rubymac$ 

~/rubymac$ rails new blah2432
(in /usr/local/lib/ruby/gems/2.5.0/gems/rails-0.8.0)
rake aborted!
LoadError: cannot load such file -- rake/rdoctask
/usr/local/lib/ruby/gems/2.5.0/gems/rails-0.8.0/Rakefile:3:in `<top (required)>'
/usr/local/lib/ruby/gems/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)
~/rubymac$ 

所以我搜索并发现了这个问题new rails project error Rails 3。这表明gem install rails -v3.0.9

所以我做了gem install rails -v5.2.2.1

它没有错误

~/rubymac$ gem install rails -v5.2.2.1
Successfully installed rails-5.2.2.1
Parsing documentation for rails-5.2.2.1
Done installing documentation for rails after 0 seconds
1 gem installed
~/rubymac$ 

但是 rails -v 仍然不起作用

~/rubymac$ rails -v
(in /usr/local/lib/ruby/gems/2.5.0/gems/rails-0.8.0)
rake aborted!
LoadError: cannot load such file -- rake/rdoctask
/usr/local/lib/ruby/gems/2.5.0/gems/rails-0.8.0/Rakefile:3:in `<top (required)>'
/usr/local/lib/ruby/gems/2.5.0/gems/rake-12.3.2/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)
~/rubymac$ 

我做 gem list 看看我有哪些 rails 版本

~/rubymac$ gem list | grep "^rails ("
rails (5.2.2.1, 5.2.2, 5.2.1.1, 5.2.1, 5.2.0, 5.1.6, 5.1.4, 5.0.7.2, 5.0.7.1, 5.0.1, 5.0.0, 0.8.0)
~/rubymac$ 

我尝试卸载 rails 0.8.0。它还提示我删除可执行文件,我说是

~/rubymac$ gem uninstall rails -v0.8.0
Remove executables:
    rails

in addition to the gem? [Yn]  y               
Removing rails
Successfully uninstalled rails-0.8.0
~/rubymac$ gem list | grep "^rails ("
rails (5.2.2.1, 5.2.2, 5.2.1.1, 5.2.1, 5.2.0, 5.1.6, 5.1.4, 5.0.7.2, 5.0.7.1, 5.0.1, 5.0.0)
~/rubymac$ rails -v
-bash: /usr/local/bin/rails: No such file or directory
~/rubymac$ gem install rails -v5.2.2.1
Successfully installed rails-5.2.2.1
Parsing documentation for rails-5.2.2.1
Done installing documentation for rails after 0 seconds
1 gem installed

但也许我在提示之前说是删除可执行文件方面走得太远了,因为现在我得到'..rails:没有这样的文件或目录'

~/rubymac$ rails -v
-bash: /usr/local/bin/rails: No such file or directory
~/rubymac$ 

即使在尝试安装 5.2.2.1

~/rubymac$ gem install rails -v5.2.2.1
Successfully installed rails-5.2.2.1
Parsing documentation for rails-5.2.2.1
Done installing documentation for rails after 0 seconds
1 gem installed
~/rubymac$ rails -v
-bash: /usr/local/bin/rails: No such file or directory
~/rubymac$ 

添加

然后我尝试了 gem 卸载 rails,我卸载了所有版本。然后我做了 sudo gem install rails 。我启动了一个新的终端窗口。导轨-v

当我这样做时,which rails它会说/usr/bin/rails这是一种改进。

但是当我做 rails -v 它说

Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
~$ 


~$ gem list | grep rails
coffee-rails (4.2.2, 4.2.1)
jquery-rails (4.3.1, 4.1.1)
rails (5.2.2.1)
rails-controller-testing (0.1.1)
rails-dom-testing (2.0.3, 2.0.2)
rails-html-sanitizer (1.0.4, 1.0.3)
sass-rails (5.0.7, 5.0.6)
sprockets-rails (3.2.1, 3.2.0)

实际上 grep rail* 更好 'cos 包括完全卸载 Rails提到的 railties

另外,我没有使用任何版本控制管理器,没有 rvm 或 rbenv

标签: ruby-on-rails

解决方案


好的,解决方案是完全卸载rails ,然后重新安装rails。但我遇到的问题是它没有完全卸载 rails。

为了完全卸载rails,这里提到了完全卸载Rails

你不仅要卸载 rails,还要卸载一个叫做 railties 的 gem!

所以,当你列出 rails gems 时,不要这样做 | grep 轨道,做 | grep rail(单数!)。即做 gem list | grep rail,然后你会得到一个与铁路相关的宝石列表,包括铁路。

我删除/卸载了所有这些宝石。(尽管可能我只需要卸载 railties 和 rails)。

然后我处于 Rails 文件(在 osx 中是 /usr/bin/rails)消失的位置而且,那些宝石消失了,这很好。

(我不想要的是a)rails文件存在的位置并且rails给出错误或b)rails文件不存在)所以这很好,因为它被完全卸载了。

然后我做了 gem install rails,它安装了 rails 和相关的 gem。这很好。


推荐阅读