2013-04-19 15 views
17

Mam tu trochę kłopotów. Pracuję z projektem Rails 2.3 (praca na serwerze produkcyjnym przez ssh - nie pytaj dlaczego). Oto Gemfile. Kiedy delayed_jobs próbuje uruchomić, wynik mówi, że muszę zainstalować klejnot bundler. Problem polega na tym, że gemdir to /var/lib/gems/1.8/ i nie mam uprawnień do zapisu dla tego katalogu. Istnieje jednak katalog pod ~/projects/shared/gems/ruby ​​/ 1.8/gems, w którym mogę pisać.Podaj katalog instalacji klejnotów

Jak zdefiniować ścieżkę instalacji klejnotu?

+0

nie wiesz, czego chcesz, ale jeśli dobrze zrozumiałem pytanie, możesz zrobić instalację pakietu - ścieżka your_path_here –

+0

Problem polega na zainstalowaniu samego pakietu pakującego. Jest to wymagane, aby aplikacja działała, ale nie jest zainstalowana w jakiś sposób. – Almaron

+0

oh widzę, źle dam ci znać, jeśli znajdę jakiś sposób –

Odpowiedz

10

Można dodać następujące do config.ru pliku:

ENV['GEM_HOME']="#{ENV['HOME']}/projects/shared/gems/ruby/1.8/gems" 
ENV['GEM_PATH']="#{ENV['GEM_HOME']}:/var/lib/ruby/gems/1.8" 
require 'rubygems' 
Gem.clear_paths 

Będzie powiedz swojej aplikacji rackowej, gdzie ma wyglądać r klejnoty.

również skonfigurować serwer .bashrc:

export GEM_HOME="$HOME/projects/shared/gems/ruby/1.8/gems" 
export GEM_PATH="$GEM_HOME:/var/lib/ruby/gems/1.8" 
+2

Wtf jest plikiem ** config.ru **? .. – ulidtko

+0

config.ru to plik konfiguracji stojaka w Twojej aplikacji – dpaluy

+4

Nie mam go. Nie mam też aplikacji. Próbuję zainstalować cudze narzędzie w Ruby i wymaga pewnych klejnotów. Czuję się niekomfortowo z koniecznością zainstalowania 'sudo'' gem install' i dlatego szukam sposobu na dopracowanie ścieżki klejnotów. Twoja odpowiedź nie daje mi tego, czego szukam. – ulidtko

12

Zmienna środowiskowa GEM_HOME definiuje lokalizację instalacji klejnotu. Musisz ustawić go w żądanym miejscu. To polecenie zależy od systemu operacyjnego.

W Windows jest set

set GEM_HOME=[path]/projects/shared/gems/ruby/1.8/gems 

Linux byłoby export

export GEM_HOME=~/projects/shared/gems/ruby/1.8/gems 
+0

Zrobiłem to i zainstalowałem klejnot aby odnieść sukces. Ale polecenie listy gem wciąż nie pokazuje, że jest zainstalowane, a kiedy próbuję użyć komendy bundle, muszę zainstalować gem. Wyjście rvm gempath poprawnie udostępnia ścieżkę wspólnych kamieni. – Almaron

+0

@Almaron spróbuj uruchomić 'pakiet instalacyjny klejnotów', aby zainstalować klejnot bundler'a w tej lokalizacji i włączyć użycie poleceń 'pakunku'. – IKA

+0

Uruchomiłem "pakiet instalacyjny klejnotów" i napisałem, że klejnot został pomyślnie zainstalowany.Ale kiedy próbuję uruchomić "listę klejnotów", nie pokazuje ona zainstalowanego klejnotu. Również polecenie pakowania nie działa. – Almaron

1

Można też po prostu ustawić wiązkę ścieżki instalacji przy użyciu pliku konfiguracyjnego Bundler. Napisałem numer post, dzięki któremu możesz sprawdzić, czy jest to pomocne.

13

Aby zainstalować Foo gem do określonego folderu, wystarczy użyć --install-dir opcję, tj

$ gem install --install-dir /path/to/gems/folder foo 

To pomaga, gdy:

  • można nie stosować bundle install - przykład jeśli chce się zainstalować Bundle sam gem, czy chce zainstalować gem (który nie jest wymieniony w Gemfile) do wiązki folderu komenda
  • sudo gem install zawiedzie z powodu braku odpisu uprawnienia dla domyślnej ścieżki instalacji

Nadzieję, że pomaga.

Powiązane problemy