#ruby #bash #macos #bundler #rbenv
#ruby #bash #macos #bundler #rbenv
Вопрос:
Итак, я использую rbenv для установки моей версии ruby (для конкретного проекта, над которым я работаю, это 2.1.1). Проблема в том, что bundler не может обнаружить это изменение. Я даже пытался установить версию в своем gemfile:
source "https://my-proxy-address"
ruby "2.1.1"
gem 'fileutils'
gem 'json'
gem 'chef-api'
Однако это приводит к точному сообщению об ошибке, как показано здесь в конце руководства:
username@hostname:~/Desktop/working-bundler-env$ rbenv version
2.1.1 (set by /Users/username/.rbenv/version)
username@hostname:~/Desktop/working-bundler-env$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin15.0]
username@hostname:~/Desktop/working-bundler-env$ bundle install
Your Ruby version is 2.0.0, but your Gemfile specified 2.1.1
В руководстве есть решение проблемы (отредактируйте файл пути), однако они не говорят, какой файл изменить. Какой файл мне изменить?
$ rbenv
rbenv 1.0.0
Usage: rbenv <command> [<args>]
Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version
install Install a Ruby version using ruby-build
uninstall Uninstall a specific Ruby version
rehash Rehash rbenv shims (run this after installing executables)
version Show the current Ruby version and its origin
versions List all Ruby versions available to rbenv
which Display the full path to an executable
whence List all Ruby versions that contain the given executable
See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme
$ which bundle
/usr/local/bin/bundle
Комментарии:
1. Вы пробовали
rbenv rehash
?2. Я пробовал без изменений
3. Можете ли вы показать значение переменной $PATH (
echo $PATH
), а также выводrbenv
команды?4. Нет вывода для
rbenv rehash
и вот мой $PATH/Users/$MYUSER/.rbenv/shims:/Users/$MYUSER/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
5. Команда просто
rbenv
без «перефразирования»
Ответ №1:
Итак, я заметил, что при запуске gem bundle install
версия была 1.13.3
. После запуска sudo find / -name bundle
я нашел два расположения файлов, которые включали этот номер версии.
/Users/myusername/.gems/gems/bundler-1.13.3/exe/bundle
/Users/myusername/.gems/gems/bundler-1.13.3/lib/bundler/man/bundle
После попытки запуска /Users/myusername/.gems/gems/bundler-1.13.3/exe/bundle install
он работает отлично. Итак, я просто создал псевдоним в своем ~/.bash_profile
, который перезаписал неправильную команду bundle.
alias bundle=/Users/alexcohen/.gems/gems/bundler-1.13.3/exe/bundle
Единственным побочным эффектом этого драгоценного камня (к лучшему или к худшему) является то, что он создает .bundle
и path
каталоги в каталоге, в который я запускаю bundle install
, куда загружаются драгоценные камни.
Мне все еще нужно выяснить, почему это происходит, но я думаю, что bundle
команда в моем терминале macs ссылалась на какой-то тип сломанного файла или файла bundler где-то в моей системе.