Problem z instalacją aplikacji rails3 na serwerze dzielonym

Mam problem z instalacją aplikacji rails 3 na serwerze dzielonym (gdzie nie mam uprawnien do instalowania gemów).
Nie ma tam zainstalowanych wszystkich gemów które wymaga aplikacja, ale sądziłem że wystarczy że będzie zainstalowany bundler.

Ale jak zainstaluję za pomocą capistrano to przy próbie otwarcia aplikacji pojawia się błąd passengera:

Could not find abstract-1.0.0 in any of the sources (Bundler::GemNotFound)

Nie wiem jak to obejść / naprawić.

Proszę o pomoc

Trzymaj bundlerowe gemy w katalogu aplikacji, instalując je przez np.

bundle install --path vendor

W ten sposób będziesz mógł je wrzucić na serwer produkcyjny bez instalowania tam żadnych gemów.

[quote=paszo]Mam problem z instalacją aplikacji rails 3 na serwerze dzielonym (gdzie nie mam uprawnien do instalowania gemów).
Nie ma tam zainstalowanych wszystkich gemów które wymaga aplikacja, ale sądziłem że wystarczy że będzie zainstalowany bundler.

Ale jak zainstaluję za pomocą capistrano to przy próbie otwarcia aplikacji pojawia się błąd passengera:

Could not find abstract-1.0.0 in any of the sources (Bundler::GemNotFound)[/quote]

  1. Załącz gemy do aplikacji (lokalnie):
bundle package    # pliki *.gem zostaną załączone do vendor/cache
  1. Dodaj do deploy.rb:
require "bundler/capistrano"

Dzięki temu po wdrożeniu samo zawoła się “bundle install” w wersji produkcyjnej. Gemy zostaną pobrane z kesza (=> brak konieczności wyjścia na świat z serwera) i zainstalowane w aplikacji w vendor/bundle (=> brak konieczności sudo).

Witam,

wkleiłem tą linijkę

require “bundler/capistrano”

do pliku deploy.rb po wymienieniu roli (role:db … , role:app …) a przed namespace :deploy do …

(nie wiem czy kolejność wpisania tej linii ma znaczenie)

ale przy odpalaniu cap deploy na końcu pojawia się komunikat o problemie z bundle install:

failed: “sh -c “bundle install --gemfile /home/paszo/public_html/blog_pliki/releases/20101216210727/Gemfile --path /home/paszo/public_html/blog_pliki/shared/bundle --deployment --quiet --without development test””

Sharnik:

Twoje rozwiązanie jest dla mnie logiczne na tzw chłopski rozum. Po prostu na sztywno wbić wszystko do kodu aplikacji.

Problem w moim przypadku pojawił się z gemem sqlite który jest inaczej kompilowany na moim kompie developer (32bitowy) a na 64 bitowym serwerze nie potrafi go odczytać.

Passenger wyrzuca błąd: wrong ELF class: ELFCLASS32 dotyczy to pliku: sqlite3_native.so

Dostałem podpowiedź żeby wykorzystać RVM do rozwiązania mojego problemu ale dopiero zacząłem się wgryzać w ten temat.

Czy to rzeczywiście może mi pomóc?

Jeśli tak to w jaki sposób krok po kroku?

Paszo:
Primo - co to za serwer współdzielony? Na wielu możesz lokalnie sobie instalować gemy, przez „gem install foo”, nie potrzeba sudo. Jak napiszesz co to za serwer, to może ktoś na nim już instalował, albo przynajmniej ostrzeżesz następne pokolenia.
Secundo - co do problemu z bundle install, to musisz spojrzeć linijkę wyżej, czemu ta komenda nie przeszła, albo spróbować ją odpalić samemu z konsoli na serwerze.
Tertio - RVM by Ci pomógł, ale tylko jeśli możesz lokalnie (dla siebie) na serwerze zainstalować swoją wersję Ruby’ego, bo wtedy gemy też byś mógł. Ale jeśli masz możliwość lokalnej instalacji RVM, to równie dobrze pewnie możesz sobie lokalnie w swoim katalogu gemy poinstalować.

Witam,

Server na linuxpl.com

Udało mi się na nim zainstalować RVM - ale nie eksperymentowałem w tym kierunku dalej.

bundle install działa jeśli się zaloguję na serwerze produkcyjnym (ale mi zależy na automatycznym odpalaniu przez capistrano)
natomiast przez capistrano zwraca bład no such file to load – bundler (LoadError)

jeśli użyję komendy ssh login @ hosting.com bundle install to podobnie bundle: command not found.

Przypuszczam że w przypadku użycia capistrano nie widzi jakiejś ścieżki dostępu.

Próbowałem wpisać maksimum informacji do pliku deploy.rb wklejony poniżej

poniżej przedstawiam ścieżki na serwerze produkcyjnym:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/mysql/bin:/usr/local/
imagemagick/bin:/opt/ruby-enterprise-1.8.7-2010.02/bin/:/home/
paszo/.rvm/bin

And gem env:

A tutaj wkleiłem pełną odpowiedź otrzymaną na komputerze z którego próbuję zainstalować aplikację:

Ciekawe jest to że na serwerze produkcyjnym nie mogę się doszukać jaka wartość mają zmienne $GEM_PATH i $GEM_HOME - więc wpisałem to co było najbardziej logiczne.

Z góry dzięki za pomoc