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ć.


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

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.


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


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

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


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"

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


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.


2

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

$ gem uninstall pg
$ gem install pg

rozwiązał ten problem za mnie.


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.


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


1

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


1

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

Skomentować

gem 'spring'

Dodaj gem 'net-shh'

i biegnij bundle install

I uruchom ponownie serwer


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.


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).



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ć.


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.


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.