Я устанавливаю новую систему. Я использую rbenv вместо rvm, потому что rvm изменяет определение «cd», а это просто зло.
У меня установлена необходимая версия ruby и rails (я думаю), но упаковщик вызывает проблемы:
turlingdrome$ gem install bundler
ERROR: While executing gem ... (Errno::EACCES)
Permission denied @ rb_sysopen - /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bundler-2.0.1/CHANGELOG.md
turlingdrome$ sudo gem install bundler
/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:6: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Done installing documentation for bundler after 3 seconds
1 gem installed
turlingdrome$ sudo gem uninstall bundler
Gem 'bundler' is not installed
turlingdrome$ bundler install
Traceback (most recent call last):
2: from /Users/brianp/.rbenv/versions/2.5.3/bin/bundler:23:in `<main>'
1: from /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
Итак, я однажды попытался использовать sudo, и теперь я думаю, что права суперпользователя... поэтому я использую sudo. ничего страшного.
Установка вроде работает.
При попытке удалить пишет, что не установлено.
Когда я пытаюсь запустить его, он находит исполняемый файл, но затем говорит, что не может найти исполняемый файл.
Я использую рубин 2.5.3 и рельсы (кажется) 5.2.3.
Rails падает с:
turlingdrome$ rails -v
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/railties-5.2.3/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Traceback (most recent call last):
4: from bin/rails:3:in `<main>'
3: from bin/rails:3:in `require_relative'
2: from /Users/brianp/work/online-reporting/config/boot.rb:6:in `<top (required)>'
1: from /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- bundler/setup (LoadError)
что я предполагаю, это та же проблема.
Если это имеет значение, я на Mac.
🤔 А знаете ли вы, что...
Rails включает в себя генераторы кода, которые позволяют быстро создавать структуру приложения и его компоненты.
Использование rbenv
— хороший выбор для управления установкой ruby
на Mac, но, похоже, вы попали в полный беспорядок из-за неработающей rbenv/gem/rails/bundler
установки и разрешений. Это не стоит исправлять, поэтому я предлагаю просто избавиться от rbenv
, удалить каталог ~/.rbenv
и установить rbenv
с brew
снова, используя это руководство.
Другие способы проверки:
Беги rbenv-doctor
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Удалите каталог ~/.rbenv
, снова запустите rbenv init
и установите нужную версию Ruby.
Убедитесь, что which ruby
и which gem
указывают на соответствующее место внутри каталога ~/.rbenv
.
Что следует отметить:
rbenv
и brew
, а также gem
не требуют sudo
, поэтому с ними ни в коем случае нельзя использоватьeval "$(rbenv init -)"
в сценарий инициализации вашей оболочки, например. echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
Кажется, проблема с правами доступа к папке.
permission denied @ rb_sysopen -
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bundler-2.0.1/CHANGELOG.md
Я бы попробовал изменить права доступа к указанному файлу/папке с помощью chmod 755 /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/
Есть несколько сообщений, посвященных аналогичной теме, например. это.
warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Похоже проблема с правами доступа. Попробуй это:
sudo chmod 755 /Users/brianp/work
rbenv works by inserting a directory of shims at the front of your PATH:
~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin
Through a process called rehashing, rbenv maintains shims in that directory to match every Ruby command across every installed version of Ruby—irb, gem, rake, rails, ruby, and so on.
Shims are lightweight executables that simply pass your command along to rbenv. So with rbenv installed, when you run, say, rake, your operating system will do the following:
- Search your
PATH
for an executable file named rake- Find the rbenv shim named rake at the beginning of your
PATH
- Run the shim named
rake
, which in turn passes the command along to rbenv
Вы испортили свою rbenv
установку.
1) Удалить установку ruby вне rbenv
3) Очистите переменную $PATH
env от ~/.bash_profile
или ~/.bashrc
Удалите любую ссылку $PATH
, указывающую на ruby
, irb
, gem
или любую папку, включая исполняемый файл bin. Подумайте о том, чтобы прокомментировать любое $PATH
утверждение из вашего bash_profile
# export PATH = "$HOME/etc/bin:$PATH"
# leave the statement below
# export PATH = "$HOME/.rbenv/bin:$PATH
Переменная $PATH
включает в себя список папок:
echo $PATH
home/fabrizio/.rbenv/shims:/opt/android-studio/bin:~/.scripts/bin
если вы запустите gem
в своем терминале
любой исполняемый файл .bin
, включенный в home/fabrizio/.rbenv/shims
или /opt/android-studio/bin
, может выполняться из любого места в терминале. Когда вы запускаете gem
, выполняется команда ruby
драгоценного камня, а не перехватывается из rbenv, потому что вы установили ruby вне rbenv.
ОБНОВЛЕНИЕ НА ОСНОВЕ ВАШЕГО ОТЗЫВА
Вы должны были выполнить этот шаг при установке ruby 2.5.0 без rbenv., поэтому удалите из ~/.bash_profile
или ~/.bashrc
следующую строку
PATH = "$PATH:$(ruby -e 'puts Gem.user_dir')/bin"
или любую другую строку, которая добавляет /Users/brianp/.gem/ruby/2.5.0/bin
к вашему $PATH
, затем удалить рубин с помощью apt.
Прочтите следующую информацию, дополнительно всегда проверяйте место установки гемов с помощью gem env:
$ gem env home
# => ~/.rbenv/versions/<ruby-version>/lib/ruby/gems/...
если местоположение из любой точки терминала не находится под ~/.rbenv/
, то вы устанавливаете драгоценные камни не в те места.
КРАЙНЕЕ СРЕДСТВО
Удалите папку с драгоценными камнями с помощью rm -rf ~/.gem
, аналогичный подход к этому посту если не можете убрать /Users/brianp/.gem/ruby/2.5.0/bin
из своего $PATH
РЕШЕНИЕ ПОСЛЕДНЕЙ ОШИБКИ
Эта ошибка вызвана установкой bundler 2.0
can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
нужно удалить bundler 2.0
и установить 1.9.0
Попробуйте удалить Gemfile.lock
и попробуйте снова установить и использовать бандлер — я только что нашел это на Github:
Bundler 2 introduced a new feature that will automatically switch between Bundler v1 and v2 based on the lockfile [...] If you do, it can be fixed by installing the version of Bundler that is declared in the lockfile. This bug was fixed in RubyGems 3.0.0 but backports are now being prepared for previous major versions of RubyGems. We’ll let you know when they become available.