Я пытаюсь создать инструмент CLI с рубином. Для моего инструмента требуется библиотека в пакете (log4r, ...). Поэтому проблема возникает, когда я переключаю свою рубиновую версию (2.0.0 -> 2.1.2) или когда gemset switch, некоторые драгоценные камни не устанавливаются в новой среде ruby. Итак, как я могу заставить мое приложение работать как vagrant
, которые работают в каждой версии рубина, который я использую?Инструмент командной строки Ruby при переключении рубиновой версии в rvm
ответ
Если вы упакуете приложение как драгоценный камень, вы можете включить Gemspec, который описывает ваше приложение. Одна из вещей, которую вы можете указать, - its runtime dependencies; когда пользователь запускает gem install myapp
, тогда команда gem
будет содержать все, что вы указали (например, log4r).
Это будет сложнее сделать это без Rubygems. Вы можете упаковать свое приложение вместе с определенной версией Ruby и всеми его требованиями - that's what Vagrant does - но это делает ваше приложение более крупным и означает, что у вас есть больше возможностей для обслуживания. Это будет тяжелая работа, если вы хотите установить приложение по всей системе и работать с каждой средой Ruby. Гораздо лучше, если приложение gem
установит ваше приложение (будь то в масштабе всей сети или через rbenv/rvm), и пусть это будет управлять вашими зависимостями для вас. Для этого вам нужны default gems plugin for rbenv и rvm gemsets.
Проблема в том, что я устанавливаю ruby из rbenv/rvm, мое приложение доступно только для этой версии ruby и gemset (скажем, 2.1.2, gemset по умолчанию). Все зависимости, такие как log4r, thor ... устанавливаются в /Users/guest/.rvm/gems/ruby-2.1.2. Так что, если я переключаю рубиновую версию, моя ошибка приложения, потому что в новой рубиновой среде log4r и thor не установлены –
Yep - но если вы используете rbenv/rvm, ваше приложение не должно быть * доступно вообще *, если вы переключитесь в среду без вашего приложения. Вы можете использовать по умолчанию gemsets с rbenv/rvm, которые могут помочь вам переключаться между версиями Ruby, не задумываясь о том, чтобы установить приложение на них - я добавил что-то в свой первоначальный ответ, чтобы отразить это. –
- 1. Использование конкретной рубиновой версии: RVM и bundler
- 2. коммутатор для рубиновой версии, установленный через RVM
- 3. Ошибка при установке любой рубиновой версии с RVM на OSX
- 4. Использование неправильной рубиновой версии после rvm ruby установки 2.2.4
- 5. Ошибка при установке рубиновой версии 2.2.5
- 6. Инструмент командной строки Ruby Gem
- 7. Обновление рубиновой версии на MAC
- 8. Различная версия rubygem для каждой рубиновой версии в rvm
- 9. RVM установка неправильной версии Ruby
- 10. Удаление старых файлов версии ruby версии rvm
- 11. Разрешение отказано рубиновой версии с использованием PassengerRuby
- 12. Нет такой рубиновой версии
- 13. Инструмент командной строки node.js
- 14. Выбор рубиновой версии, которую распознает Aptana?
- 15. Инструмент командной строки Deflate
- 16. Ошибка рубиновой версии Когда я запускаю пакет в Jekyll
- 17. Сохранять инструмент командной строки
- 18. Ошибка версии Rvm
- 19. Переключение рубиновой версии для запуска команды на сервере
- 20. Система и rvm версии Ruby отличаются
- 21. Набор RVM для каждого пользователя Ruby версии
- 22. Как упаковать скомпилированный инструмент командной строки для использования в Ruby?
- 23. Создание оптимизированной рубиновой версии при сбрасывании в snakeyaml
- 24. Установите rvm в определенной версии
- 25. Проблема с изменением рубиновой версии для sh
- 26. Что такое p180 в рубиновой версии?
- 27. Настройка проблемы при установке версии Ruby с RVM
- 28. Ошибка при установке другой версии ruby с использованием rvm
- 29. Использование правой версии Ruby с RVM на Ubuntu
- 30. Инструмент командной строки для сброса версии Windows DLL?
Vagrant - это предварительно упакованное приложение. Он упаковывает его версию ruby, ее зависимость от gem и все такое. http://mitchellh.com/abandoning-rubygems – Joeyjoejoejr