【问题标题】:Installed Rails but the rails command says it's not installed已安装 Rails,但 rails 命令显示未安装
【发布时间】:2010-12-29 13:38:04
【问题描述】:

我正在使用 Ubuntu 9.10 Karmic Koala 和 Ruby 1.9.1。

我使用sudo gem install rails 安装了 Rails,它为我安装了所有库。

当我在终端中输入rails 时,它会显示。

当前未安装程序“rails”。您可以通过键入以下内容来安装它: sudo apt-get install rails rails:找不到命令

我可以找到rake,它在rake1.9.1下,但是找不到Rails,有人能指出我正确的方向吗?

编辑:ruby 的路径不是问题,问题是rails 在哪里?我该如何执行它? rails 不起作用,可执行文件在哪里?

【问题讨论】:

  • 您是否更新了 PATH 变量以包含 rails 安装的 bin 目录?
  • 不..我没有,我应该指向哪里?我找不到它的可执行文件。 locate rails 只返回文档链接。
  • 有时我们会在克隆应用程序时遇到这个问题,而 bundle 仍然需要安装,因此只需从应用程序根目录运行 $ bundle 即可解决此问题。

标签: ruby-on-rails ruby rubygems gem


【解决方案1】:

正如其他人所说,这很可能是 bashrc/bash_profile 文件中的 PATH 变量问题。

You can learn how to change PATH..

你可以通过输入echo $PATH获取当前的PATH变量

【讨论】:

  • 把路径放在那里不是问题,好像rails根本没有安装,如何检查它是否真的安装了?它的可执行文件是什么?它住在哪里?
  • 运行gem environment,你会发现EXECUTABLE DIRECTORY
  • 你太棒了!谢谢传统知识!这正是我所需要的。事实证明,通过 gem 安装它不会创建符号链接。我创建了它并将其指向可执行目录。工作得很好
  • @rgoytacaz 你如何创建符号链接?
  • @Hlung 使用sudo ln -s /usr/local/bin/rails /usr/bin/rails 或进行相应更改。
【解决方案2】:

如果您在安装 rails 后立即运行 rails 命令,则需要重新启动终端才能识别您的命令。

【讨论】:

  • 在发布多个问题的复制和粘贴样板/逐字答案时要小心,这些往往会被社区标记为“垃圾邮件”。如果您这样做,则通常意味着问题是重复的,因此请将它们标记为:stackoverflow.com/a/13149543/419
  • 已标记。对此我会更加小心。答案可能对遇到任何一个帖子的人(比如我)都有帮助,这就是我分享它的原因。
【解决方案3】:

刚刚遇到同样的问题,只需将以下内容放入您的 .bashrc 中

PATH="${PATH}:/var/lib/gems/1.8/bin/"

【讨论】:

  • PATH="${PATH}:/var/lib/gems/1.8/bin/"
【解决方案4】:

假设 ruby-2.0.0-p247 已安装,rails 位于以下位置。

prayag@prayag$ ls -l ~/.rvm/gems/ruby-2.0.0-p247/bin/
total 60
-rwxr-xr-x 1 prayag prayag 484 Oct  2 00:20 cap
-rwxr-xr-x 1 prayag prayag 487 Oct  2 00:20 capify
-rwxr-xr-x 1 prayag prayag 475 Oct  1 21:13 erubis
-rwxr-xr-x 1 prayag prayag 469 Oct  1 21:13 rackup
-rwxr-xr-x 1 prayag prayag 480 Oct  1 21:18 rails
-rwxr-xr-x 1 prayag prayag 494 Oct  2 00:27 restclient
-rwxrwxr-x 1 prayag prayag 368 Oct  1 21:10 ruby_executable_hooks
-rwxr-xr-x 1 prayag prayag 467 Oct  2 00:27 sass
-rwxr-xr-x 1 prayag prayag 475 Oct  2 00:27 sass-convert
-rwxr-xr-x 1 prayag prayag 467 Oct  2 00:27 scss
-rwxr-xr-x 1 prayag prayag 487 Oct  1 21:20 sprockets
-rwxr-xr-x 1 prayag prayag 483 Oct  2 00:29 stripe-console
-rwxr-xr-x 1 prayag prayag 467 Oct  1 21:17 thor
-rwxr-xr-x 1 prayag prayag 467 Oct  1 21:20 tilt
-rwxr-xr-x 1 prayag prayag 474 Oct  1 21:16 tt

[1] .bash_profile 应该已经包含以下行,如果不添加的话。

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

[2] 将以下行添加到.bashrc 的末尾。

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
PATH="${PATH}:${HOME}/.rvm/gems/ruby-2.0.0-p247/bin/"

[3]重新加载~/.bashrc

$ source ~/.bashrc

而且,它应该可以工作。

【讨论】:

    【解决方案5】:

    如果您正在运行 rbenv,则需要运行 rbenv rehash 访问 rails-api 命令。

    【讨论】:

      【解决方案6】:

      gem 应该将 rails 可执行脚本放置在与 ruby​​ 相同的位置。我会在那里查看并确保权限设置正确并且是可执行的。

      【讨论】:

        【解决方案7】:

        我认为这不是解决此问题的正确方法。但我所做的是, 我在我的可执行目录中创建了一个 rails.rb 文件,因为当我打开该目录时文件不存在并放入以下内容。

        #!/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 =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
          version = $1
          ARGV.shift
        end
        
        gem 'railties', version
        load Gem.bin_path('railties', 'rails', version)
        

        然后我尝试在我的项目及其作品中运行rails s..

        但在此之前,请确保可执行目录在您的路径中,就像我已经在我的机器中一样: /home/anand/.rvm/gems/ruby-1.9.3-p286/bin:/home/anand/.rvm/gems/ruby-1.9.3-p286@global/bin:/home/anand/.rvm/rubies/ruby-1.9.3-p286/bin:/home/anand/.rvm/bin

        根据 TK 所说,您可以使用 gem environment 命令获取可执行路径

        【讨论】:

          【解决方案8】:

          我在我的 .bashrc 文件中添加了以下几行,它起作用了。

          [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # 将 RVM 作为函数加载到 shell 会话中

          PATH="${PATH}:${HOME}/.rvm/gems/ruby-1.9.3-p327/bin/"

          【讨论】:

            【解决方案9】:

            如果您使用的是rbenv,请不要忘记添加

            eval "$(rbenv init -)"
            

            进入您的.bash_profile 或其他启动脚本。 还需要运行rbenv rehash

            【讨论】:

              【解决方案10】:

              一种可能的解决方案是不维护两个不同的配置文件.bash_profile.bashrc

              这篇关于.bash_profile.bashrc 区别的优秀帖子中建议是从.bash_profile 文件中获取.bashrc,然后将PATH 和常用设置放入.bashrc

              引用,

              将以下行添加到.bash_profile

              if [ -f ~/.bashrc ]; then source ~/.bashrc fi

              结束引用

              【讨论】:

                【解决方案11】:

                您可能希望在 bashrc 文件中包含 Ruby/Jruby 文件夹的路径。这将确保您能够从任何地方运行它。 不要忘记重新启动终端或“source .bashrc”以重新加载终端中的变量。

                【讨论】:

                • 问题不在于 ruby​​,ruby 效果很好。但是当运行 rails 时它说它没有安装,虽然如果我做 gem list,它会正确地显示给我,rails 2.3.5
                • 我查找了我的 ruby​​ 安装的 bin 文件夹。它有一个“rails”文件。如果我将其重命名为其他名称并尝试运行 rails;它没有脚手架或创建项目..而是说没有安装rails sudo apt-get install 来安装rails。但是,如果我将其重命名为 rails;然后它开始工作。所以我很确定只要正确安装了 rails 并且你将它放在 bin 文件夹中,它就应该运行。也许我还没有将它作为 gem 安装,而且我正在使用 JRuby。
                猜你喜欢
                • 1970-01-01
                • 2013-01-19
                • 1970-01-01
                • 2021-04-11
                • 2021-08-21
                • 2015-11-01
                • 2021-10-25
                • 2012-02-23
                • 1970-01-01
                相关资源
                最近更新 更多