Odpowiedzi:
Wierzę, że możesz to zrobić:
gem "foo", path: "/path/to/foo"
spring stop
sprawdzić, 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_PATH
folderze. Nie byłem w stanie tego rozgryźć, jakaś pomoc?
bundle config --delete local.GEM_NAME
bundle config disable_local_branch_check true
przeciwnym 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-tree
Pobieranie ścieżki repozytorium (polecenie jest wykonywane w folderze gem)
git rev-parse --show-toplevel
Konfigurowanie lokalnego zastąpienia dla aplikacji railsowej
bundle config local.GEM_NAME /path/to/local/git/repository
gdzie GEM_NAME
jest nazwą twojego klejnotu i /path/to/local/git/repository
jest wynikiem polecenia w punkcie2
W swojej aplikacji Gemfile
dodaj następujący wiersz:
gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Bieganie bundle install
powinno 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_NAME
jest nazwa twojego klejnotu i /path/to/local/git/repository
od punktu2
Wreszcie uruchom bundle list
, nie, gem list
i powinieneś zobaczyć coś takiego:
GEM_NAME (0.0.1 5a68b88)
gdzie GEM_NAME
jest 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
RubyMine
to, że nie pokazuje lokalnych klejnotów jako zewnętrznej biblioteki. Więcej informacji o błędzie można znaleźć tutaj i tutajstop/start
serwer railsowyJeśli zmieniam version
klejnot, stopping/starting
serwer Railsów wyświetla błąd. Aby to naprawić, podaję wersję klejnotu w aplikacji Gemfile
railsowej 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.