Как я могу указать локальный драгоценный камень в моем Gemfile?
Я хотел бы, чтобы Бандлер загрузил местный драгоценный камень. Есть ли для этого выбор? Или мне нужно переместить папку gem в .каталог узелок?
6 ответов
в дополнение к указанию пути (как упоминал Джимми) вы также можете заставить Bundler использовать локальный камень только для вашей среды С помощью следующей опции конфигурации:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Это очень полезно, если вы разрабатываете два драгоценных камня или драгоценный камень и приложение rails бок о бок.
обратите внимание, что это работает только тогда, когда вы уже используете git для своей зависимости, например:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
Как видно на в docs.
вы также можете ссылаться на локальный драгоценный камень с git, если вы работаете над ним.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
затем, если он изменится, я запускаю
bundle exec gem uninstall foo
bundle update foo
но я не уверен, что все должны выполнить эти два шага.
чтобы использовать локальный репозиторий gem в проекте Rails, выполните следующие действия:
-
проверьте, является ли ваша папка gem репозиторием git (команда выполняется в папке gem)
git rev-parse --is-inside-work-tree
-
получение пути к репозиторию (команда выполняется в папке gem)
git rev-parse --show-toplevel
-
настройка локального переопределения для приложения rails
bundle config local.GEM_NAME /path/to/local/git/repository
здесь
GEM_NAME
имя ваш драгоценный камень и/path/to/local/git/repository
является выводом команды в точке2
-
в приложении
Gemfile
добавить следующую строку:gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
-
под управлением
bundle install
должны дать что-то вроде этого:Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository)
здесь
GEM_NAME
- имя вашего гем и/path/to/local/git/repository
от точки2
-
наконец, run
bundle list
, а неgem list
и вы должны увидеть нечто вроде это:GEM_NAME (0.0.1 5a68b88)
здесь
GEM_NAME
- имя
несколько важных случаев, которые я наблюдаю, используя:
Rails 4.0.2
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
- кажется
RubyMine
не показывает локальные драгоценные камни как внешнюю библиотеку. Более подробную информацию об ошибке можно найти здесь и здесь - когда я изменяю что-то в локальном драгоценном камне, чтобы быть загруженным в приложение rails, я должен
stop/start
сервер rails -
если я меняю
version
камень,stopping/starting
сервер Rails дает мне ошибку. Чтобы исправить это, я указываю версию gem в приложении railsGemfile
такой:gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
вы можете ссылаться на драгоценные камни с источником:source: 'https://source.com', git repository (:github => 'git/url')
и с локальным путем :path => '.../path/gem_name'
.
Вы можете узнать больше о Gemfiles и как их использовать в этой статье.