Как запустить конкретную версию рубинового камня

Я запускаю тормозную систему за пределами моего Gemfile, поэтому не использую bundler.

Если я сделаю gem list, Я вижу, у меня есть следующие для тормозов

brakeman (3.3.3, 3.3.2, 3.1.4, 3.1.2)

Но если я сделаю brakeman --version, Я получил

brakeman 3.1.2

поэтому я не использую последнюю версию. Если я сделаю gem update brakeman или же

gem update brakeman, '3.3.3,

я получил

Updating installed gems
Nothing to update

Итак, как мне запустить тормозную версию 3.3.3?

4 ответа

Решение

Я не могу воспроизвести эту проблему, но я могу придумать несколько причин, по которым это может произойти:

  • Bundler артефакты (возможно, в .bundle/) указывая на старую версию. Попробуйте запустить в другом каталоге и посмотреть, если это все еще происходит
  • Ошибка в RubyGems (попробуйте gem update --system)
  • Во время установки он спросил, хотите ли вы заменить brakeman бинарный и вы выбрали "нет"
  • Если вы используете менеджер версий Ruby, возможно, одна версия находится на пути, отличном от другого (например, системный гем или тот, которым управляет rvm)
  • Любое количество GEM_PATH, bundler, gem, rvm странность, которая иногда возникает

В любом случае, на вашем месте я бы gem uninstall brakeman, удалите все версии и установите свежие. Если вы используете rvm, начните со свежего драгоценного камня или rvm gemset empty текущий.

Если у вас установлено несколько версий gem и вы хотите вызвать определенную версию из командной строки, вы можете использовать:

brakeman _3.3.3_ [args go here]

Это не относится к тормозам, вы можете сделать это для большинства других драгоценных камней.

У меня была похожая проблема: я удалил определенную версию гема, но версия все равно появилась.

TL; DR: rbenv rehash сделал трюк. (Действителен только для rbenv пользователи, очевидно)

$ gem install brakeman -v 3.3.3

затем в вашем Gemfile (если он у вас есть) укажите эту конкретную версию, например:

"brakeman", "~> 3.3.3"
Другие вопросы по тегам