Подтвердить что ты не робот

Weird rails error "разрешено: bin/rails" для старых приложений rails

Я получаю эту ошибку всякий раз, когда я запускаю rails (или любую команду rails) _rails_command:2: permission denied: bin/rails ТОЛЬКО, когда я попадаю в каталог старых рельсов.

В этих каталогах команда bundle exec rails c работает, но rails или даже rails -v не работают.

Фон: Я сохраняю рабочее пространство для кодирования в папке Dropbox. Теперь я недавно установил Manjaro и, следовательно, все приложения для рельсов, которые я загрузил из своей предыдущей ОС, называю их старыми рельсами.

Короче: Rails отлично работает везде, за исключением старых приложений rails. bundle exec rails c работает нормально. Ruby версии, которые я пробовал: 2.0.0 (rvm), 2.1.1(rvm), 2.1.1 (system)

Окружающая среда Gem: 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/[email protected] - RUBY EXECUTABLE: /home/tat/.rvm/rubies/ruby-2.0.0-p451/bin/ruby - EXECUTABLE DIRECTORY: /home/tat/.rvm/gems/[email protected]/bin - SPEC CACHE DIRECTORY: /home/tat/.gem/specs - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /home/tat/.rvm/gems/[email protected] - /home/tat/.rvm/gems/[email protected] - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - https://rubygems.org/ - SHELL PATH: - /home/tat/.rvm/gems/[email protected]/bin - /home/tat/.rvm/gems/[email protected]/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

UPDATE: Он работает отлично в bash, проблема, похоже, связана с oh-my-zsh.

Вот мой rvm-info (от zsh):

[email protected]:

  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 <[email protected]>, Michal Papis <[email protected]> [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/[email protected]"
    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/[email protected]/bin/rake"

  environment:
    PATH:         "/home/tat/.rvm/gems/[email protected]/bin:/home/tat/.rvm/gems/[email protected]/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/[email protected]"
    GEM_PATH:     "/home/tat/.rvm/gems/[email protected]:/home/tat/.rvm/gems/[email protected]"
    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"
4b9b3361

Ответ 1

В указанном вами каталоге представлены ваши рельсы в исполняемом режиме. Если вы не можете применить

chmod u+x bin/rails

и сделать его выполнимым.

Ответ 2

Запустить

bundle exec rake rails:update:bin

Он обновит файлы bin/rails и bin/rake.

Ответ 3

У меня есть это, когда я пытаюсь использовать версию 4.0 rails. Поэтому, когда я пытаюсь сначала поставить bundle exec, например:

bundle exec rake db:migrate

или

bundle exec rails s

произведения.

Ответ 4

У меня была такая же проблема, и вот что мне помогло. Откройте ~/.zshrc и добавьте это

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

Ответ 5

Решение для меня было:

bundle exec rake rails:update:bin

или просто используйте:

Для новых версий рельсов:

 bundle exec rake app:update:bin

Для старых версий рельсов:

bundle exec rake rails:update:bin

Ответ 6

Итак, что сработало для меня, любой, кто сталкивался с этой проблемой, должен бежать

bundle exec rake app:update:bin

Вам будет предложено спросить, хотите ли вы перезаписать? Варианты здесь:

  • Y - да (по умолчанию, просто нажмите Enter для этого)
  • n - нет (оставить текущий файл без изменений)
  • a - все (применить все изменения)
  • q - выйти
  • d - diff
  • ч - помочь

Я выбрал, и казалось, что все в порядке.