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.