#ruby-on-rails #rvm #bundler
#ruby-on-rails #rvm #bundler
Вопрос:
Я запустил «bundle install» в существующем приложении Rails 3, в котором есть драгоценные камни в vendor / cache (я предполагаю, что они были упакованы с помощью «bundle package» ранее) и действительные Gemfile и Gemfile.блокировка файлов.
Что я увидел, так это то, что он создал folder .bundle в моем домашнем каталоге.
Я также использую RVM. Когда я попробовал «список драгоценных камней», я не увидел ни одного из установленных драгоценных камней в vendor / cache.
Я делаю что-то не так? Везде, где говорится в статьях о пакете, выполните «bundle» или «bundle install», чтобы установить драгоценные камни в Gemfile и Gemfile-файл.блокировка файлов. Связана ли проблема с использованием RVM?
Спасибо за любой совет.
Комментарии:
1. Посмотрите в папке, возвращенной
rvm gemdir
. Вот где они должны быть установлены.2. Но их там нет? Должен ли я выполнить следующее: установка пакета
rvm gemdir
?3. По сути, bundler создает структуру каталога следующим образом: ruby/1.8/{bin, кэш, документ, драгоценные камни, спецификации}. Тогда мой вопрос заключался бы в том, как заставить bundle install создать эту структуру каталога в соответствующем rvm ruby, т. Е. поместить кэш пакета. драгоценные камни и спецификации в кэш rvm ruby, драгоценные камни и спецификации? Есть ли способ это сделать?
4. Bundler будет использовать Gemfile для установки в текущий gemdir. Я думаю , что когда драгоценные камни будут проданы, вам нужно будет сделать это отдельно. Также я не думаю, что в списке драгоценных камней будут показаны продаваемые драгоценные камни (я могу ошибаться). Посмотрите документы. Также может помочь этот Railscast .
Ответ №1:
Если вы дадите аргумент для bundle install
, он продолжит установку драгоценных камней внутри этого каталога, даже если вы rm -rf
этот каталог и начнете с нуля с чистого bundle install
, как отмечено в комментарии Эмиля. Этот новый каталог по умолчанию используется bundler, и он даже заменяет то, что вы объявляете в .rvmrc
файле.
Чтобы удалить это ограничение, просто отредактируйте .bundle/config
файл и удалите файл с объявлением BUNDLE_PATH
, например,
BUNDLE_PATH: /usr/local/lib/
Комментарии:
1. Это то, что, наконец, сделало это за меня. После удаления этой строки в
.bundle/config
он поместил все в соответствующееrvm
место, как мне и было нужно.
Ответ №2:
Загляните rvm env gemdir
, также проверьте, что у вас установлено .rvmrc
в терминах gemset. Сделайте bundle install
, и он должен получить все драгоценные камни.
Проверьте, .bundle
выполнив $ cat .bundle
, чтобы увидеть его содержимое, и проверьте, копирует ли он драгоценные камни в vendor/ruby
. Это будет иметь место только в том случае, bundle install --path vendor/ruby
если было предоставлено (Ссылка).
Комментарии:
1. Я нашел проблему. Когда вы предоставляете аргумент для установки пакета, он продолжает устанавливать gems внутри этого каталога, даже если вы rm -rf этот каталог и начинаете с нуля с чистой «установки пакета».
2. Действительно.
.bundle
необходимо отредактировать, чтобы это не вступило в силу при будущих запускахbundle install
.