Jak Mogę określić lokalny klejnot w moim Gemfile?

Chciałbym, żeby Bundler załadował lokalny klejnot. Jest na to jakieś wyjście? Czy muszę przenieść folder gem do .katalog pakietów?

Author: gotqn, 2010-12-20

6 answers

Wierzę, że możesz to zrobić:

gem "foo", :path => "/path/to/foo"
 479
Author: Jimmy Cuadra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-20 08:51:32

Oprócz podania ścieżki (jak wspomniał Jimmy) Możesz również wymusić użycie lokalnego klejnotu tylko dla Twojego środowiska , używając 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 i aplikację rails.

Zauważ jednak, że działa to tylko wtedy, gdy używasz już Gita dla 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ć nadocs .

 204
Author: bloudermilk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-02 11:11:50

Możesz również odnieść się do lokalnego klejnotu z Gitem, jeśli akurat nad nim pracujesz.

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

Wtedy, jeśli się zmieni, uruchamiam

bundle exec gem uninstall foo
bundle update foo

Ale nie jestem pewien, czy każdy musi wykonać te dwa kroki.

 28
Author: Rimian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-25 09:03:44

Aby użyć lokalnego repozytorium gem w projekcie Rails, wykonaj poniższe kroki:]}

  1. Sprawdź, czy twój folder gem jest repozytorium git (polecenie jest wykonywane w folderze gem)

    git rev-parse --is-inside-work-tree
    
  2. [24]} pobieranie ścieżki do repozytorium (polecenie jest wykonywane w folderze gem)
    git rev-parse --show-toplevel
    
  3. Ustawianie lokalnego nadpisania dla aplikacji rails

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

    Gdzie GEM_NAME to nazwa Twojego klejnotu, a {[9] } to wyjście polecenia w punkcie 2

  4. W aplikacji Gemfile Dodaj następujący wiersz:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
  5. 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 to nazwa Twojego klejnotu i /path/to/local/git/repository z punktu 2

  6. Wreszcie Uruchom bundle list, a nie gem list i powinieneś zobaczyć coś takiego:

    GEM_NAME (0.0.1 5a68b88)
    

    Gdzie GEM_NAME to nazwa Twojego klejnotu


Kilka ważnych spraw, które obserwuję użycie:

Rails 4.0.2  
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] 
Ubuntu 13.10  
RubyMine 6.0.3
  • wygląda na to, że RubyMine nie pokazuje lokalnych klejnotów jako zewnętrznej biblioteki. Więcej informacji o błędzie można znaleźć tutaj i tutaj
  • kiedy zmieniam coś w lokalnym klejnocie, aby załadować się do aplikacji rails powinienem stop/start serwer rails
  • Jeśli zmieniam version gem, stopping/starting Serwer Rails wyświetla mi błąd. Aby to naprawić, podaję wersję gem w rails aplikacja Gemfile w ten sposób:

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
    
 16
Author: gotqn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-03 15:49:11

Możesz odnosić się do klejnotów używając source: source: 'https://source.com', git repository (:github => 'git/url') oraz local path :path => '.../path/gem_name'.
W tym artykule dowiesz się więcej o plikach Gemfiles i jak z nich korzystać.

 0
Author: Nesha Zoric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-09 15:33:59

Jeśli chcesz również gałąź:

gem 'foo', path: "point/to/your/path", branch: "branch-name"
 -2
Author: C Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-18 22:27:04