The Developer Times — simplicity & usability

Ruby on Rails 3 Bundler: Как заморозить gem в проект?

Иногда так случается, что нужно значительно модифицировать существующий исходный код gem-а, который в оригинальном виде нас не устраивает. Если проект открытый, то можно форкнуть код gem-а на GitHub-е и указать в Gemfile путь к репозиторию:

gem 'forked_gem', :git => "git://github.com/user/forked_gem.git"

Но если проект, закрытый, то такая тема может не покатить. В данном случае необходимо запечатать/заморозить gem в проект, для последующего его изменения.

Делается это просто. Для этого добавляем строку

gem 'sealed_gem', '1.0.0', :path => './vendor/gems/sealed_gem-1.0.0'

в Gemfile.

Разворачиваем sealed_gem из репозитория в директорию vendor/gems:

$ gem unpack sealed_gem --target vendor/gems --version=1.0.0
Unpacked gem: './vendor/gems/sealed_gem-1.0.0'

Инсталлируем sealed_gem в проект:

$ bundle install --path vendor/bundle
Installing ...
Using sealed_gem (1.0.0) from source at ./vendor/gems/sealed_gem-1.0.0
Installing ...

Теперь мы можем менять исходный код sealed_gem и изменения будут аккуратно подхватываться текущим RoR-проектом.

| tags:
7 заметок:
  1. drevlyanin это опубликовал(а)