2011-07-31 15 views
14

Jestem w trakcie pisania demona opartego na Ruby, aby usiąść i uruchomić na jednym z moich serwerów Ubuntu. Będę chciał, aby to działało podczas uruchamiania, więc napiszę do tego plik zadań dla początkujących. Jednak Użyłem Bundler za zarządzanie różnymi perełki to wykorzystuje i zamierza zrobić to po wdrożeniu go do serwera:Uruchamiasz aplikację Ruby w dystrybucji pakietowej poza swoim własnym katalogiem?

bundle install --deployment 

Stawia Bundler do tzw „tryb rozmieszczania”, w którym znajdują się różne opcje zestaw i wszystkie klejnoty są instalowane w katalogu "dostawcy", a nie w całym systemie. Jednak to stwarza problem z uruchomieniem go, przy czym musi on być wykonany z własnego katalogu, jak to jest, gdy kamienie skończyć:

<in the app's dir> 
$ ./runmyapp 
<it runs> 

Gdybym cd do innej lokalizacji, a następnie spróbuj uruchomić go za pomocą jest pełna ścieżka, to nie:

<in another directory> 
$ /path/to/runmyapp 
<it crashes as it can't locate its gems> 

Czytałem przez wiele dokumentacji Bundler i cały ten scenariusz nie jest jeszcze pokryty? Czy powinienem zamiast tego zainstalować klejnoty w systemie? Czy jest coś jeszcze, co powinienem zrobić?

Odpowiedz

28

Używasz pęku kluczy jako menedżera klejnotów dla swojej aplikacji. Myślę, że w tym przypadku najlepszym sposobem na uruchomienie plików wykonywalnych jest użycie bundle exec.

Jeśli uruchomisz aplikację z innego katalogu niż katalog zawierający Gemfile, powinieneś ustawić Gemfile, ustawiając BUNDLE_GEMFILE (patrz bundle help exec). Poniższe pomoże:

BUNDLE_GEMFILE=/path/to/Gemfile bundle exec /path/to/runmyapp 
+1

Myślałem, że 'bundle exec' był do wykonywania plików wykonywalnych w klejnotach. To znaczy klejnoty, które bundler zainstalował dla mojej aplikacji w oparciu o plik gem, ale nie moje własne. Czy to nie prawda? –

+0

'bundle exec' służy do uruchamiania plików wykonywalnych w środowisku gems. Cytat z http://gembundler.com/man/bundle-exec.1.html: 'bundle-exec - Wykonaj polecenie w kontekście pakietu' – petRUShka

+0

Działa to w ten sposób. Ale być może istnieje inny sposób, – petRUShka

Powiązane problemy