Odpowiedzi:
Wierzę, że możesz to zrobić:
gem "foo", path: "/path/to/foo"
spring stopsprawdzić, czy to rzeczywiście jest problem.
Oprócz określenia ścieżki (jak wspomniał Jimmy) możesz również zmusić Bundlera do używania lokalnego klejnotu dla twojego środowiska tylko przy użyciu następującej opcji konfiguracji:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Jest to niezwykle pomocne, jeśli tworzysz obok siebie dwa klejnoty lub klejnot oraz aplikację railsową.
Pamiętaj jednak, że działa to tylko wtedy, gdy już używasz git do swojej zależności, na przykład:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
Jak widać w dokumentacji .
BUNDLE_PATH(budowanie pakietu do dystrybucji). Robiąc to, co zasugerowałeś lub odpowiedź Jimmy'ego, robi to tylko using, a nie instaluje się w moim BUNDLE_PATHfolderze. Nie byłem w stanie tego rozgryźć, jakaś pomoc?
bundle config --delete local.GEM_NAME
bundle config disable_local_branch_check trueprzeciwnym razie Bundler narzeka na gałąź. Bądź jednak ostrożny, ponieważ kontrole mają powstrzymać wprowadzanie niepoprawnych zatwierdzeń Gemfile.lock. Dokumenty tutaj: bundler.io/v1.12/git.html
Możesz także odwołać się do lokalnego klejnotu za pomocą git, jeśli akurat nad nim pracujesz.
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
Potem, jeśli to się zmieni, biegnę
bundle exec gem uninstall foo
bundle update foo
Ale nie jestem pewien, czy wszyscy muszą wykonać te dwa kroki.
bundle uninstall <gem> && bundle install , dla każdej zmiany, którą chcesz odzwierciedlić w swojej aplikacji
Aby użyć lokalnego repozytorium klejnotów w projekcie Rails, wykonaj następujące czynności:
Sprawdź, czy folder gem jest repozytorium git (polecenie jest wykonywane w folderze gem)
git rev-parse --is-inside-work-treePobieranie ścieżki repozytorium (polecenie jest wykonywane w folderze gem)
git rev-parse --show-toplevelKonfigurowanie lokalnego zastąpienia dla aplikacji railsowej
bundle config local.GEM_NAME /path/to/local/git/repository
gdzie GEM_NAMEjest nazwą twojego klejnotu i /path/to/local/git/repositoryjest wynikiem polecenia w punkcie2
W swojej aplikacji Gemfiledodaj następujący wiersz:
gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'Bieganie bundle installpowinno dać coś takiego:
Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository)
gdzie GEM_NAMEjest nazwa twojego klejnotu i /path/to/local/git/repositoryod punktu2
Wreszcie uruchom bundle list, nie, gem listi powinieneś zobaczyć coś takiego:
GEM_NAME (0.0.1 5a68b88)
gdzie GEM_NAMEjest nazwa twojego klejnotu
Kilka ważnych przypadków, które obserwuję za pomocą:
Rails 4.0.2
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
RubyMineto, że nie pokazuje lokalnych klejnotów jako zewnętrznej biblioteki. Więcej informacji o błędzie można znaleźć tutaj i tutajstop/startserwer railsowyJeśli zmieniam versionklejnot, stopping/startingserwer Railsów wyświetla błąd. Aby to naprawić, podaję wersję klejnotu w aplikacji Gemfilerailsowej w następujący sposób:
gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'Możesz odwoływać się do klejnotów za pomocą źródła: source: 'https://source.com', git repository (:github => 'git/url')i ścieżki lokalnej :path => '.../path/gem_name'.
Możesz dowiedzieć się więcej o Gemfiles i tym, jak ich używać w tym artykule.