serwer rails bin / rails: 6: ostrzeżenie: już zainicjowany stały błąd APP_PATH

79

Próbowałem wielu rzeczy, takich jak odinstalowanie / ponowne zainstalowanie szyn i klejnotów, ale bezskutecznie.

Kiedy wchodzę do mojego nowego projektu i uruchamiam rails s lub pakiet exec rails server, pojawia się ten błąd:

bin/rails:6: warning: already initialized constant APP_PATH
/Users/toabui/Sites/cms/bin/rails:6: warning: previous definition of APP_PATH was here Usage: rails COMMAND [ARGS]

W moim koszu / szynach widzę ten kod:

#!/usr/bin/env ruby
begin
load File.expand_path("../spring", __FILE__)
rescue LoadError
end
APP_PATH = File.expand_path('../../config/application',  __FILE__)
require_relative '../config/boot'
require 'rails/commands'

Czy ktoś wie, dlaczego ciągle otrzymuję ten błąd, gdy uruchamiam szyny?

Wyszukałem w Google i wygląda na to, że wystąpił błąd w wiosennym klejnocie, ale nie mogę go uruchomić.

tobu
źródło
6
Miałem ten problem, a przyczyną jest to, że konfiguracja na database.ymladapterze była inna Gemfile.
monteirobrena
W rzeczywistości otrzymuję również ten błąd, gdy używam klejnotu Bulkmail. Jeśli skomentuję ten klejnot, błąd nie nadchodzi.
Shailendr singh
stackoverflow.com/a/35851557/3728916 rozwiązał mój problem
ImranNaqvi

Odpowiedzi:

116

Nie mogłem znaleźć an_initilizer.rb w moim katalogu i próbowałem odinstalować / zainstalować element Spring Gem, ale to nie zadziałało.

Jednak w końcu udało mi się to uruchomić.

Najwyraźniej jest jakiś konflikt ze sprężyną i szynami 4+.

Musiałem biec:

rake rails:update:bin 

Ale napotkałem inny błąd:

Library not loaded: libmysqlclient.18.dylib

Uruchomiłem następujące polecenie, które znalazłem na innym poście stackoverflow:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

Następnie uruchomiono oryginalne polecenie:

 rake rails:update:bin 

Następnie uruchom polecenie serwera:

 rails s

A teraz mój serwer WebBrick jest uruchomiony.

tobu
źródło
Dziękuję bardzo! To naprawdę pomogło!
Vadim,
1
Idealnie, musiałem też biec bin/rake db:migrate RAILS_ENV=development
Shadoath
Równie dobrze mógłbym przyjąć tę odpowiedź; wydaje się, że działa dla wielu ludzi.
Paul Richter,
1
Wydaje się, że jest to związane z mysql, jeśli umieścisz mysql2 w swoim pliku gem. ten błąd zostanie zgłoszony niezależnie od tego, czy używasz mysql2 jako bazy danych, czy nie.
Chris.Zou
Miałem te same błędy. To rozwiązało mój problem. Dziękuję Ci!
cyonder
40

rake rails:update:bin na pomoc.

cisolarix
źródło
13

Jeśli korzystasz z El Capitan (OS X 10.11), Security Integrity Protection (SIP) uniemożliwi połączenie z / usr / lib w celu naprawienia mysql. Zamiast tego połącz go z / usr / local / lib:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
jcraigk
źródło
Pojawia się błąd ln: /usr/local/lib/libmysqlclient.18.dylib: Plik istnieje .. Jakieś pomysły?
Isaac Y
@IsaacY a co z opcją -f?
geoom
Jeśli zainstalowany mysql używając homebrew lub inny sposób można dowiedzieć się ścieżkę bibliotek, uruchamiając mysql_config --libspotem robiszsudo ln -s mypath /usr/local/lib/libmysqlclient.18.dylib
gosukiwi
6

To jest praca dla mnie.

gem uninstall mysql2

bundle install lub gem install mysql2

kun
źródło
3

Otrzymałem ten sam błąd. Usunięto sprężynę z Gemfile i ponownie dołączono. Nie jest to jednak rozwiązanie.

Znalazłem kod, który spowodował ten błąd w config/initializers/an_initializer.rb

require "lib/a_file_i_need"

Zmieniłem to dla

require "#{ Rails.root }/lib/a_file_i_need"
gabriel
źródło
dołączenie #{Rails.root}do ścieżki pomogło mi pozbyć się błędu.
Jignesh Gohel
2

Otrzymałem ten błąd, próbując zaktualizować rails 4 oraz imagemagick i rmagick. Więc po prostu pobiegłem

gem odinstaluj rmagick

Wybierz opcję Wszystkie wersje. Następnie spróbuj ponownie

EDYCJA: To się powtórzyło właśnie teraz, ponieważ próbowałem użyć klejnotu bez instalowania wymaganego klejnotu podstawowego. W moim przypadku rozwiązaniem była instalacja „omniauth-google” przed próbą użycia „omniauth-google-oauth2”, ale ponieważ nie zainstalowałem, ponownie wystąpił ten sam błąd

betoharres
źródło
2

Mam ten sam błąd. Miałem Ruby 2.1.3 i Rails 4.1.6 działające na Mavericks, a następnie przeprowadziłem migrację do Yosemite i zainstalowałem wersję 4.2.0 rails oraz Ruby 2.1.5, a moje aplikacje, które stworzyłem w poprzedniej wersji, nie działały z nową , więc stworzyłem kilka zestawów klejnotów za pomocą RVM i zainstalowałem wersję 2.1.3. Teraz, gdy chciałem uruchomić serwer, otrzymałem ten błąd:

bin/rails:6: warning: already initialized constant APP_PATH
/Users/Lexynux/_WebProjects/RoR_Apps/SAIIP2/bin/rails:6: warning: previous definition of APP_PATH was here
Usage: rails COMMAND [ARGS]

I jak wspomniał Tobu pobiegłem:

rake rails:update:bin

Mam to:

LoadError: dlopen(/Users/Lexynux/.rvm/gems/ruby-2.1.3@SAIIP2/extensions/x86_64-darwin-14/2.1.0-static/mysql2-0.3.16/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib

Następnie uruchomiłem to:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

I w końcu powtórzyłem pierwszą komendę, gdy terminal poprosił mnie o to:

Overwrite /Users/Lexynux/_WebProjects/RoR_Apps/SAIIP2/bin/rails? (enter "h" for help) [Ynaqdh]

Po prostu wpisałem „Y” i wcisnąłem Return.

Po tym wszystkim zacząłem pracować i szło mi dobrze.

Dzięki.

alexventuraio
źródło
2

Otrzymałem ten błąd po aktualizacji postgresql.

$ gem uninstall pg
$ gem install pg

rozwiązał ten problem za mnie.

Ryan Doom
źródło
2

Zdarzyło mi się to po wykonaniu brew upgrade . Domyślam się, że zepsuło to pewne zalety rozszerzeń natywnych, mimo że nie było komunikatu o błędzie wskazującego na to.

Skończyło się na tym, że całkowicie usunąłem zainstalowane klejnoty (w moim przypadku całkowicie odinstalowałem i ponownie zainstalowałem wersję Ruby za pomocą rbenv).
Uruchomienie bundle installponownie skompilowało rozszerzenia natywne i wszystko znów działało.

amiuhle
źródło
1
W moim przypadku było to po aktualizacji mysql, więc jedyną rzeczą, którą musiałem odinstalować, było mysql gemzainstalowanie pakietu.
guzart
1

Otrzymałem ten sam błąd, z którym jest powiązany gem dotenv. Instrukcje miały na celu dodanie do Gemfile:

gem 'dotenv', :require => 'dotenv/rails-now'

Ale jak się okazało, dotenv/rails-nowspowodował błąd. Jeśli używasz dotenv, nie wymagajrails-now

antonpot
źródło
1

Czy używasz pg i mysql w różnych gałęziach? Jeśli tak, potwierdź plik konfiguracyjny db.

ysk
źródło
1

Opublikuję, co zadziałało dla mnie.

Skomentować

gem 'spring'

Dodaj gem 'net-shh'

i biegnij bundle install

I uruchom ponownie serwer

Colper
źródło
1

Otrzymałem ten błąd po aktualizacji szyn. Wyłączenie springpodpowie mi, że problem dotyczył:

gem 'google-api-client', require: 'google/api_client'

Zmienić na:

gem 'google-api-client', '0.9'

Rozwiązano problem.

Edu Lomeli
źródło
0

Otrzymałem ten sam komunikat o błędzie podczas próby uruchomienia aplikacji w środowisku Vagrant. Pojawił się znikąd po zerowych zmianach w kodzie aplikacji (i nastąpiło inne dziwne zachowanie, takie jak usunięcie pliku development.rb podczas próby uruchomienia aplikacji).

W końcu po prostu zatrzymałem maszynę wirtualną i uruchomiłem ją ponownie, wszystko było w porządku, więc zakładam, że był to problem z synchronizacją plików / udostępnianymi folderami? (używany jest domyślny folder współdzielony Vagrant).

Greg Annandale
źródło
0

Uruchom je w konsoli:

rake tmp:clear
rake secret
przeznaczenie
źródło
0

GDYBY rake rails:update:bin podaje dodatkowe błędy:

Niedawno przeprowadzałem konserwację serwera, a następnie zaktualizowałem OpenSSL.

Kiedy próbowałem uruchomić rake rails:update:binpolecenie, pojawił się błąd związany z openSSL.

Po przebudowaniu mojej wersji Rubiego (`rvm reinstalacja ruby-xxx 'z RVM) oba błędy zniknęły.

Myślę, że zawsze warto spróbować.

DazBaldwin
źródło
0

Mój problem polegał na tym, że używałem przestarzałej wersji Ruby 1.9.3 z szynami 4.2. Zaktualizowałem do wersji 2.1.2, usunąłem zepsuty projekt, uruchomiłem nowy blog railsów, aby odtworzyć mój projekt, przeszedłem do mojej nowo utworzonej aplikacji i uruchomiłem serwer rails i to działało.

Donovan Thomson
źródło
0

Właśnie miałem ten problem i stwierdziłem, że jest to spowodowane faktem, że usunąłem klejnot z pliku klejnotu bez usuwania innych requireodniesień. W moim przypadku wystarczyło usunąć go z config / application.rb.

calyxofheld
źródło
0

Gdyby ten błąd pojawił się niedawno, jest to spowodowane wiosną, z powodu sugerowanego kodu w plikach wykonywalnych:

begin
  load File.expand_path('../spring', __FILE__)
rescue LoadError
end

Pierwotnie oczekuje LoadError sprężyna będzie w produkcji, ale według tego kodu wszystkie inne błędy obciążenia również zostaną zignorowane.

Tak więc, jeśli masz inny LoadErrorproces ładowania szyn (na przykład w trasach / init), uruchomienie programu Spring Worker kończy się niepowodzeniem, a następnie pojawia się gałąź, która próbuje załadować wszystko ponownie, jakby nie było sprężyny.

Vasfed
źródło
0

Dla mnie ten problem jest wynikiem między innymi aktualizacji pakietu rvm-capistrano.
Dodanie tego wymaga: fałszywe naprawione rzeczy w końcu zgodnie z tym poprzednim postem

gem  'rvm-capistrano',  require: false

Chociaż może to być dodatkowy problem - ponieważ uruchomienie rake rails:update:binmogło pomóc w rozwiązaniu początkowego problemu.

Rich_LogicBox
źródło