【问题标题】:Weird rails error "permission denied: bin/rails" for old rails apps旧 Rails 应用程序的奇怪 Rails 错误“权限被拒绝:bin/rails”
【发布时间】:2014-04-25 15:56:27
【问题描述】:

每当我运行 rails(或任何 rails 命令)时,我都会收到此错误 _rails_command:2: permission denied: bin/rails 仅当我在一些 old rails 应用程序目录中时。

在这些目录中,bundle exec rails c 命令有效,但 rails 甚至 rails -v 无效。

背景: 我将编码工作区保存在 Dropbox 文件夹中。 现在我最近安装了 Manjaro,因此我从以前的操作系统下载回来的所有 Rails 应用程序我称之为 old rails 应用程序。

简而言之: 除了旧的 Rails 应用程序之外,Rails 在任何地方都可以正常工作。 bundle exec rails c 工作正常。 我尝试过的 Ruby 版本: 2.0.0 (rvm), 2.1.1(rvm), 2.1.1 (system)

宝石环境: RubyGems Environment: - RUBYGEMS VERSION: 2.2.2 - RUBY VERSION: 2.0.0 (2014-02-24 patchlevel 451) [x86_64-linux] - INSTALLATION DIRECTORY: /home/tat/.rvm/gems/ruby-2.0.0-p451@latest - RUBY EXECUTABLE: /home/tat/.rvm/rubies/ruby-2.0.0-p451/bin/ruby - EXECUTABLE DIRECTORY: /home/tat/.rvm/gems/ruby-2.0.0-p451@latest/bin - SPEC CACHE DIRECTORY: /home/tat/.gem/specs - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /home/tat/.rvm/gems/ruby-2.0.0-p451@latest - /home/tat/.rvm/gems/ruby-2.0.0-p451@global - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - https://rubygems.org/ - SHELL PATH: - /home/tat/.rvm/gems/ruby-2.0.0-p451@latest/bin - /home/tat/.rvm/gems/ruby-2.0.0-p451@global/bin - /home/tat/.rvm/rubies/ruby-2.0.0-p451/bin - /home/tat/bin - /usr/local/bin - /usr/local/sbin - /usr/local/bin - /usr/bin - /usr/bin/core_perl - /home/tat/.rvm/bin

更新: 它在 bash 中运行良好,问题似乎出在 oh-my-zsh 上。

这是我的 rvm-info(来自 zsh):

ruby-2.0.0-p451@latest:

  system:
    uname:       "Linux tat-box 3.10.37-1-MANJARO #1 SMP Mon Apr 14 20:56:29 UTC 2014 x86_64 GNU/Linux"
    system:      "manjaro/0.8.9/x86_64"
    bash:        "/usr/bin/bash => GNU bash, version 4.3.8(1)-release (x86_64-unknown-linux-gnu)"
    zsh:         "/usr/bin/zsh => zsh 5.0.5 (x86_64-unknown-linux-gnu)"

  rvm:
    version:      "rvm 1.25.23 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]"
    updated:      "21 hours 33 minutes 15 seconds ago"
    path:         "/home/tat/.rvm"

  ruby:
    interpreter:  "ruby"
    version:      "2.0.0p451"
    date:         "2014-02-24"
    platform:     "x86_64-linux"
    patchlevel:   "2014-02-24 revision 45167"
    full_version: "ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]"

  homes:
    gem:          "/home/tat/.rvm/gems/ruby-2.0.0-p451@latest"
    ruby:         "/home/tat/.rvm/rubies/ruby-2.0.0-p451"

  binaries:
    ruby:         "/home/tat/.rvm/rubies/ruby-2.0.0-p451/bin/ruby"
    irb:          "/home/tat/.rvm/rubies/ruby-2.0.0-p451/bin/irb"
    gem:          "/home/tat/.rvm/rubies/ruby-2.0.0-p451/bin/gem"
    rake:         "/home/tat/.rvm/gems/ruby-2.0.0-p451@latest/bin/rake"

  environment:
    PATH:         "/home/tat/.rvm/gems/ruby-2.0.0-p451@latest/bin:/home/tat/.rvm/gems/ruby-2.0.0-p451@global/bin:/home/tat/.rvm/rubies/ruby-2.0.0-p451/bin:/home/tat/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl:/home/tat/.gem/ruby/2.1.0/bin:/home/tat/.rvm/bin"
    GEM_HOME:     "/home/tat/.rvm/gems/ruby-2.0.0-p451@latest"
    GEM_PATH:     "/home/tat/.rvm/gems/ruby-2.0.0-p451@latest:/home/tat/.rvm/gems/ruby-2.0.0-p451@global"
    MY_RUBY_HOME: "/home/tat/.rvm/rubies/ruby-2.0.0-p451"
    IRBRC:        "/home/tat/.rvm/rubies/ruby-2.0.0-p451/.irbrc"
    RUBYOPT:      ""
    gemset:       "latest"

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 rvm oh-my-zsh


    【解决方案1】:

    在您提到的目录中,您的rails 处于可执行模式。如果没有,你可以申请

    chmod u+x bin/rails
    

    并使其可执行。

    【讨论】:

    • 是的,有效:)。但是当我使用 bash 时,不管 chmod'ing 是什么,它都可以工作。
    • 这解决了问题作为一种解决方法,但应该将@newtron54 的答案标记为正确答案。
    【解决方案2】:

    运行

    bundle exec rake rails:update:bin
    

    它将更新 bin/rails 和 bin/rake 文件。

    【讨论】:

      【解决方案3】:

      所以对我有用,遇到这个问题的任何人都可以运行

      bundle exec rake app:update:bin
      

      系统会提示您是否要覆盖?这里的选项是:

      • Y - 是(默认一个,直接回车)
      • n - 否(保持当前文件不变)
      • a - 全部(应用所有更改)
      • q - 退出
      • d - 差异
      • h - 帮助

      我选择了一个,它似乎工作正常。

      【讨论】:

        【解决方案4】:

        当我尝试使用 rails 4.0 版本时,我遇到了这个问题。 因此,当我尝试将bundle exec 放在首位时,例如:

        bundle exec rake db:migrate
        

        bundle exec rails s
        

        工作。

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题,这对我有帮助。 打开 ~/.zshrc 并添加这个

          export PATH="$HOME/.rbenv/bin:$PATH"
          eval "$(rbenv init -)"
          

          【讨论】:

            【解决方案6】:

            我的解决方案是:

            bundle exec rake rails:update:bin
            

            或直接使用:

            对于新的 Rails 版本:

             bundle exec rake app:update:bin
            

            对于旧的 Rails 版本:

            bundle exec rake rails:update:bin
            

            【讨论】:

              猜你喜欢
              • 2014-10-19
              • 1970-01-01
              • 1970-01-01
              • 2015-10-30
              • 2018-06-06
              • 1970-01-01
              • 2016-01-19
              • 1970-01-01
              • 2011-12-28
              相关资源
              最近更新 更多