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-проектом.
7 заметок:
-
drevlyanin это опубликовал(а)