Ustawiam aplikację Rails 4 z Ruby 2.0, ale otrzymuję komunikat „Nie można uruchomić aplikacji internetowej” i otrzymuję ten ślad:
cannot load such file -- bundler/setup (LoadError)
/usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
/usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `<module:App>'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'
Mój plik apache2.conf to:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/bin/ruby
bundle -v
jest:
Bundler version 1.3.5
ruby -v
jest:
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
gem env
jest:
RubyGems Environment:
- RUBYGEMS VERSION: 2.1.5
- RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /root/.gems/bin
- /usr/lib/ruby/gems/1.8/bin/
- /usr/local/bin
- /usr/bin
- /bin
- /usr/bin/X11
- /usr/games
- /usr/sbin
- /sbin
echo $GEM_PATH
jest:
/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8
Nie powinno GEM_PATH
być /usr/lib/ruby/gems/2.0
?
Wewnątrz wirtualnego hosta w apache2.conf dodałem:
SetEnv GEM_HOME /usr/lib/ruby/gems/1.8
A teraz to działa.
Czy to właściwy sposób, aby to naprawić?
źródło
sudo
rzeczywiście jest to konieczne? Kiedyś,sudo
ale teraz zastanawiam się, co by się stało, gdybym tego nie zrobił.sudo
!sudo gem ....
zainstalujedefault
wersję gem i (w moim przypadku Ubuntu 14.04)sudo
nie może uruchomić rvm.sudo
domyślnego systemu Ruby, ale nie potrzebowałem go dla żadnej wersji Ruby, którą zainstalowałem z rvm.gem 2.7.6
iruby 2.5.0p0
co robić?Najprawdopodobniej masz zainstalowanych więcej niż jeden Ruby.
Jeśli używasz RVM, prawdopodobnie musisz uruchomić:
aby ustawić wersję ruby do użycia.
Zobacz http://rvm.io/rubies/default
powie Ci wersję, której aktualnie używasz.
źródło
Możesz spróbować uruchomić:
Jak @Dinesh wspomniano w Railsach 5:
źródło
W moim przypadku wiersze dołączone do pliku konfiguracyjnego apache po zainstalowaniu pasażera wyglądały następująco:
Ale aplikacja wymaga Ruby 2.0.0, więc zajęło mi to trochę czasu, ale w końcu błąd został rozwiązany po określeniu innej ścieżki za pomocą poniższego `` PassengerRuby '' w pliku konfiguracyjnym wirtualnego hosta Apache dla aplikacji:
źródło
PassengerDefaultRuby
chodziło o starą instalację rubinu.Otrzymałem ten błąd w nowej aplikacji Railsów z poprawnie zainstalowanym pakietem. Skomentowanie wiosennego klejnotu w Gemfile rozwiązało problem.
źródło
gem install spring
zamiast komentować.Napotkałem ten sam problem, ale myślę, że był to spowodowane
spring
buforowaniem niektórych klejnotów i konfiguracji. Naprawiłem to, biegającgem pristine --all
.Przywraca to zainstalowane klejnoty do nieskazitelnego stanu z plików znajdujących się w pamięci podręcznej klejnotów.
lub możesz po prostu spróbować swojego klejnotu
źródło
To działo się dla mnie w środowisku produkcyjnym.
rm /vendor/bundle
następnie
bundle install --deployment
rozwiązał problem.
źródło
Inna możliwa sytuacja: masz wielu użytkowników zdefiniowanych w środowisku serwera. W takim razie bieganie
poda niezbędne polecenie, aby określić
nginx/sites-enabled/relevant_application
plik w przypadku użycia, na przykład:źródło
miałem ten sam problem i bez powodzenia wypróbowałem wszystkie odpowiedzi.
kroki, które zrobiłem, aby odtworzyć:
rvm instal 2.1.10
rvm gemset create my_gemset
rvm use 2.1.10@my_gemset
bundle install
jednak
bundle install
zainstalowałem Railsy, ale nadal mamcannot load such file -- bundler/setup (LoadError)
w końcu działa
gem install rails -v 4.2
naprawił toźródło
Wersja pakietu Bundler może powodować problem.
Zainstaluj pakiet z innym numerem wersji.
Na przykład,
gem install bundler -v 1.0.10
źródło
gem uninstall -a bundler; gem install bundler -v '<2.0'
.Miałem to, ponieważ coś złego było w moim
vendor/bundle
. Nie ma to nic wspólnego z Apache, tylko w lokalnym środowisku deweloperskim.Aby to naprawić, usunąłem
vendor\bundle
, a także usunąłem odniesienie do niego w moim,.bundle/config
aby nie został ponownie użyty.Następnie ponownie spakowałem (który następnie zainstalowałem
GEM_HOME
zamiast,vendor/bundle
a problem zniknął.źródło
UWAGA: Moja firma hostingowa to Site5.com i mam zarządzany VPS.
Dodałem zmienne env zarówno dla GEM_HOME, jak i GEM_PATH do pliku .htaccess w moim katalogu public_html (alias do katalogu publicznego w aplikacji railsowej)
Wcześniej nie były potrzebne, więc coś musiało się zmienić po stronie gospodarzy. Wystąpił ten błąd po dotknięciu pliku restart.txt w celu ponownego uruchomienia serwera pasażera.
Otrzymano GEM_PATH przez:
echo $ GEM_PATH
Dostałem GEM_HOME od:
klejnot env
Zaktualizowany plik .htaccess z następującymi wierszami:
źródło
Dla mnie problemem było skojarzenie RVM Ruby z Passenger. Musiałem więc zintegrować opakowanie RVM Ruby z plikiem konfiguracyjnym pasażera.
Znajduję ścieżkę opakowania rvm ruby za pomocą polecenia:
Wziąłem ścieżkę od wyniku i wszedłem do konfiguracji pasażera w
nginx/passenger.conf
:źródło
Naprawiłem ten problem, tworząc projekt testowych szyn i instalując wszystkie klejnoty, a następnie zastąpiłem mój obecny plik Gemfile.lock testem i wszystko działa dobrze.
Myślę, że ten problem dotyczy
bundler
wersji z hostingiem, więc upewnij się, że pakiet hostingowy jest w tej samej wersji co Twój projekt.źródło
W mojej sytuacji chodziło o uprawnienia:
źródło
Wersja wersji ruby, której użyto phusion pasażera, różni się w zależności od aplikacji railsowej.
Upewnij się, że wersja w konfiguracji httpd jest taka sama jak w aplikacji rails.
źródło