2013-03-19 10 views
5

Heyo. Z góry przepraszam, jeśli na to pytanie odpowiedziano w innym wątku. Przeszukałem witrynę, ale nie znalazłem odpowiedzi. Jednak najbliższy powiązany problem to Ruby on Rails/PostgreSQL - Library not Loaded error when starting server- libq.5.dylib, ale nigdy nie został rozwiązany, a odpowiedź nie pomaga mi.Ruby on Rails/PostgreSQL - błąd biblioteki nie został załadowany podczas uruchamiania serwera

Próbuję uruchomić PostgreSQL na moim Mac OSX 10.6.8. Mam już zainstalowane Ruby 1.9.3p392 i Rails 3.2.13.

odkąd 10.6.8 i PostGresApp wymaga 10.7+, próbowałem instalacji PG pomocą ręcznego instalatora (v9.2.3) dostępny tutaj: http://www.enterprisedb.com/products-services-training/pgdownload

raz pierwszy zainstalowano go do domyślnej ścieżce w:/Biblioteka/PostgreSQL/9.2 /. Następnie zainstalowałem gem pg (PATH=$PATH:/Library/PostgreSQL/9.2/binsudo gem install pg). Kiedy próbowałem rails s, aby uruchomić mój localhost, dostałem błąd poniżej.

Po pewnym przeczytaniu, domyślam się, że może to być błąd ścieżki, więc usunąłem pg gem, a następnie skorzystałem z deinstalatora PostgreSQL. Następnie ponownie zainstalowałem pg w /users/stewartmccoy/Library/PostgreSQL/9.2/..., a następnie ponownie zainstalowałem gem pg. Ale wciąż mam ten sam błąd.

Jakieś przemyślenia na temat tego, jak mogę poprawnie zainstalować PostgreSQL i uruchomić serwer Railsowy?

stewart-mccoys-macbook:footy_subs stewartmccoy$ rails s 
/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `require': dlopen(/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib (LoadError) 
    Referenced from: /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    Reason: image not found - /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler.rb:132:in `require' 
    from /Users/stewartmccoy/Code/footy_subs/config/application.rb:13:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
stewart-mccoys-macbook:footy_subs stewartmccoy$ gem uninstall pgSuccessfully uninstalled pg-0.14.1 
stewart-mccoys-macbook:footy_subs stewartmccoy$ PATH=$PATH:/users/stewartmccoy/Library/PostgreSQL/9.2/bin sudo gem install pg 
Password: 
Fetching: pg-0.14.1.gem (100%) 
Building native extensions. This could take a while... 
Successfully installed pg-0.14.1 
1 gem installed 
Installing ri documentation for pg-0.14.1... 
Installing RDoc documentation for pg-0.14.1... 
stewart-mccoys-macbook:footy_subs stewartmccoy$ rails s 
/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `require': dlopen(/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib (LoadError) 
    Referenced from: /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    Reason: image not found - /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler.rb:132:in `require' 
    from /Users/stewartmccoy/Code/footy_subs/config/application.rb:13:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
+1

* Dziękuje * za zapewnienie racjonalnego poziomu szczegółowości - wersja Pg, typ pakietu pg, system operacyjny itd. –

+0

możliwy duplikat błędu [Ruby on Rails/PostgreSQL - Library not Loaded przy uruchamianiu server- libq.5.dylib] (http://stackoverflow.com/questions/9182645/ruby-on-rails-postgresql-library-not-loaded-error-when-starting-server-libq) – bummi

Odpowiedz

6

Kluczową częścią tego błędu jest:

Library not loaded: libpq.5.dylib (LoadError) 

Sugeruje to, że Ruby nie może odnaleźć libpq przy starcie. Aby rozwiązać ten problem, prawdopodobnie powinieneś ustawić zmienną środowiskową DYLD_LIBRARY_PATH, aby wskazywała katalog lib twojej instalacji PostgreSQL, globalnie lub w skrypcie otoki, którego używasz do uruchamiania Railsów. Zobacz this superuser question, aby uzyskać więcej informacji.

Pg gem można znaleźć bibliotekę podczas kompilacji i instalacji, ponieważ pg_config wykonywalny jest na PATH i wykorzystuje to, aby znaleźć libpq. Wygląda na to, że nie przechowuje ścieżki do użycia w środowisku wykonawczym, więc musisz sam ustawić dynamiczny linker środowiska wykonawczego.

Prosty skrypt otoki (w przypadku, gdy nie chcesz zmodyfikować swoje globalne środowisko) jest coś takiego jak:

#!/bin/bash 
export DYLD_LIBRARY_PATH=/path/to/pg/lib 
exec rails "[email protected]" 

z „$ @” zasadniczo oznacza „przejść wszystkie argumenty do tego skryptu przez jakby zostały przekazane tutaj bezpośrednio ". Zachowuje poprawnie cytowanie i zasadniczo oznacza, że ​​polecenie rails nie może powiedzieć, że nie uruchomiłeś go bezpośrednio.

+0

Dzięki Craig.Czy istnieje powód, dla którego nie chciałbym globalnie ustawić zmiennej środowiskowej DYLD_LIBRARY_PATH? Jeśli najlepszym rozwiązaniem jest skrypt otoki, w jaki sposób powinienem zapisać scenariusz i gdzie? tj. z jaką nazwą pliku i rozszerzeniem oraz w jakim katalogu, więc Rails wie, aby uruchomić skrypt w czasie wykonywania? – stewartmccoy

+0

@stewartmccoy Railsy nie uruchamiają skryptu, skryptu używa się do uruchamiania Railsów. Użyj go tak, jakby był to polecenie 'rails'. W większości przypadków dobrze jest ustawić globalnie "DYLD_LIBRARY_PATH", jedynym powodem, dla którego nie należy, jest konflikt nazw bibliotek. –

+0

Próbowałem szukać SO/googling, aby ustawić globalnie "DYLD_LIBRARY_PATH", ale nie mogłem znaleźć rozwiązania, które miałoby sens. Jak mogę to zrobić? Zakładam, że musiałbym ustawić ścieżkę do '/ users/stewartmccoy/Library/PostgreSQL/9.2 /' od tam, gdzie mam zainstalowany pg? A jeśli podejmiemy takie podejście, czy będę mógł używać 'rails s' do przeglądania aplikacji na localhost? – stewartmccoy

0

Podobna odpowiedź stackoverflow zaproponowała usunięcie Postgres.app ze swojej PATH, odinstalowanie pg gem i ponowne zainstalowanie pg gem.

(nie jestem poświęcenie czasu, aby dokładnie sprawdzić, czy to odnosi się do tego problemu, ale rozwiązał problem miałem i chcę szerzyć wokół tego rozwiązania, ponieważ miałem problemy ze znalezieniem go.)

Powiązane problemy