it-swarm.com.ru

Как я могу указать местный драгоценный камень в моем Gemfile?

Я бы хотел, чтобы Bundler загрузил местный драгоценный камень. Есть ли вариант для этого? Или мне нужно переместить папку gem в каталог .bundle?

330
picardo

Я считаю, что вы можете сделать это:

gem "foo", :path => "/path/to/foo"
502
Jimmy Cuadra

В дополнение к указанию пути (как упоминал Джимми) вы также можете заставить 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

Как видно на документы .

215
bloudermilk

Вы также можете ссылаться на локальный гем с помощью git, если вам довелось работать над ним.

gem 'foo',
  :git => '/Path/to/local/git/repo',
  :branch => 'my-feature-branch'

Затем, если это изменится, я бегу

bundle exec gem uninstall foo
bundle update foo

Но я не уверен, что всем нужно выполнять эти два шага.

30
Rimian

Чтобы использовать локальное хранилище гемов в проекте Rails, выполните следующие действия:

  1. Проверьте, является ли ваша папка gem хранилищем git (команда выполняется в папке gem)

    git rev-parse --is-inside-work-tree
    
  2. Получение пути к хранилищу (команда выполняется в папке gem)

    git rev-parse --show-toplevel
    
  3. Настройка локального переопределения для приложения Rails

    bundle config local.GEM_NAME /path/to/local/git/repository
    

    где GEM_NAME - имя вашего драгоценного камня, а /path/to/local/git/repository - вывод команды в точке 2

  4. В вашем приложении Gemfile добавьте следующую строку:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
  5. Запуск 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

  6. Наконец, запустите 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 выдает мне ошибку. Чтобы это исправить, я указываю версию гема в приложении Rails Gemfile следующим образом:

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
18
gotqn

Вы можете ссылаться на драгоценные камни с источником: source: 'https://source.com', git repository (:github => 'git/url') и с локальным путем :path => '.../path/gem_name'.
Вы можете узнать больше о Gemfiles и как их использовать в этой статье.

0
Nesha Zoric