Как я могу указать локальный камень в моем Gemfile?



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

743   6  

6 ответов:

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

gem "foo", :path => "/path/to/foo"

в дополнение к указанию пути (как упоминал Джимми) вы также можете заставить Bundler использовать локальный камень только для вашего окружения С помощью следующей опции конфигурации:

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

Это очень полезно, если вы разрабатываете два камня или камень и рельсы приложения бок о бок.

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

# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'

# In your terminal
$ bundle config local.rack ~/Work/git/rack

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

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

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

тогда, если он изменится я запускаю

bundle exec gem uninstall foo
bundle update foo

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

для того, чтобы использовать локальный репозиторий GEM в 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 выдает мне ошибку. Чтобы исправить это, я указываю версию gem в приложении rails Gemfile такой:

    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 и как их использовать в этой статье.

Если вы тоже хотите ветку:

gem 'foo', path: "point/to/your/path", branch: "branch-name"

Comments

    Ничего не найдено.