rails server bin / rails : 6 : 경고 : 이미 초기화 된 상수 APP_PATH 오류


79

레일과 보석을 제거 / 재설치하는 것과 같은 여러 가지를 시도했지만 아무 소용이 없습니다.

새 프로젝트로 이동하여 rails s 또는 bundle exec rails 서버를 실행하면이 오류가 발생합니다.

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]

내 빈 / 레일 안에 다음 코드가 있습니다.

#!/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'

내가 rails s를 실행할 때 왜 계속 그 오류가 발생하는지 아는 사람이 있습니까?

나는 봤는데 봄 보석에 오류가있는 것 같지만 작동하도록 할 수없는 것 같습니다.


6
나는이 문제가 있었고 원인은 database.yml에서 어댑터 의 구성 이 다릅니다 Gemfile.
monteirobrena 2014 년

실제로 bulkmail gem을 사용할 때도이 오류가 발생합니다.이 gem에 댓글을 달면 오류가 발생하지 않습니다.
Shailendr singh 2015 년

답변:


116

내 디렉토리에서 an_initilizer.rb를 찾을 수 없었고 spring gem을 제거 / 설치하려고 시도했지만 작동하지 않았습니다.

그러나 나는 마침내 그것을 작동시킬 수 있었다.

분명히 스프링 및 레일 4+와 약간의 충돌이 있습니다.

다음을 실행해야했습니다.

rake rails:update:bin 

하지만 다른 오류가 발생했습니다.

Library not loaded: libmysqlclient.18.dylib

다른 stackoverflow 게시물에서 찾은 다음 명령을 실행했습니다.

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

그런 다음 원래 명령을 실행했습니다.

 rake rails:update:bin 

그런 다음 서버 명령을 실행하십시오.

 rails s

이제 내 WebBrick 서버가 실행 중입니다.


정말 고맙습니다! 이것은 정말 도움이되었습니다!
Vadim

1
완벽 해, 나도 달려야했다 bin/rake db:migrate RAILS_ENV=development
Shadoath 2014-08-14

이 대답을 받아 들일 수도 있습니다. 많은 사람들에게 효과가있는 것 같습니다.
Paul Richter

1
gemfile에 mysql2를 포함하면 mysql과 관련된 것으로 보입니다. 이 오류는 mysql2를 데이터베이스로 사용하는지 여부에 관계없이 발생합니다.
Chris.Zou 2014 년

나는 같은 오류가 있었다. 이것은 내 문제를 해결했습니다. 감사합니다!
cyonder


13

El Capitan (OS X 10.11)을 사용중인 경우 SIP (Security Integrity Protection)는 mysql을 수정하기 위해 / usr / lib에 연결하는 것을 방지합니다. 대신 / usr / local / lib에 링크하십시오.

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

ln : /usr/local/lib/libmysqlclient.18.dylib : File exists .. 어떤 아이디어가 있습니까?
Isaac Y

@IsaacY -f 옵션은 어떻습니까?

homebrew 또는 다른 방법을 사용하여 mysql을 설치 한 경우 mysql_config --libs다음을 실행하여 라이브러리 경로를 찾을 수 있습니다.sudo ln -s mypath /usr/local/lib/libmysqlclient.18.dylib
gosukiwi

6

이것은 나를위한 일입니다.

gem uninstall mysql2

bundle install 또는 gem install mysql2


3

같은 오류가 발생했습니다. Gemfile에서 스프링을 제거하고 다시 번들로 제공합니다. 그래도 실제로 해결책은 아닙니다.

이 오류를 생성 한 코드를 config/initializers/an_initializer.rb

require "lib/a_file_i_need"

나는 그것을 변경했다

require "#{ Rails.root }/lib/a_file_i_need"

#{Rails.root}경로에 추가 하면 오류를 제거하는 데 도움이되었습니다.
Jignesh Gohel

2

Rails 4와 imagemagick 및 rmagick를 업데이트하려고하면이 오류가 발생했습니다. 그래서 방금 달렸어요

보석 제거 rmagick

모든 버전 옵션을 선택합니다. 그런 다음 다시 시도하십시오

편집 : 이것은 필요한 기본 gem을 설치하지 않고 gem을 사용하려고했기 때문에 방금 저와 함께 다시 발생했습니다. 제 경우 해결책은 'omniauth-google-oauth2'를 사용하기 전에 'omniauth-google'을 설치하는 것이었지만 설치하지 않았기 때문에 동일한 오류가 다시 발생했습니다.


2

같은 오류가 발생했습니다. Mavericks에서 루비 2.1.3과 레일 4.1.6을 실행 한 다음 Yosemite로 마이그레이션하여 4.2.0 레일 버전 루비 2.1.5를 설치했는데 이전 버전에서 만든 앱이 새 버전에서 작동하지 않았습니다. , 그래서 RVM으로 몇 가지 보석 세트를 만들고 2.1.3 버전을 설치했습니다. 이제 서버를 실행하고 싶을 때 다음과 같은 오류가 발생했습니다.

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]

그리고 tobu가 언급했듯이 나는 달렸습니다.

rake rails:update:bin

알 겠어:

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

그런 다음 이것을 실행했습니다.

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

마지막으로 터미널에서 요청한 첫 번째 명령을 반복했습니다.

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

'Y'를 입력하고 리턴을 누르십시오.

이 모든 후에 나는 일을 시작했고 잘 지내고 있었다.

감사.


2

postgresql을 업그레이드 한 후이 오류가 발생했습니다.

$ gem uninstall pg
$ gem install pg

나를 위해이 문제를 해결했습니다.


2

이것은 일을 한 후에 나에게 일어났습니다. brew upgrade . 내 생각에 이것은 오류 메시지가 나타나지 않았지만 기본 확장으로 일부 보석을 깨뜨렸다는 것입니다.

내가 한 일은 설치된 gem을 완전히 제거하는 것입니다 (제 경우에는를 사용하여 루비 버전을 완전히 제거하고 다시 설치했습니다 rbenv).
실행 bundle install하면 기본 확장이 재 컴파일되었고 모든 것이 다시 실행되었습니다.


1
제 경우에는 mysql을 업그레이드 한 후 였기 때문에 제거해야하는 gem 만 mysql gem번들 설치를 실행했습니다.
guzart

1

동일한 오류가 발생하여 gem dotenv. 지침은 Gemfile에 다음을 추가하는 것입니다.

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

그러나 결과적으로 dotenv/rails-now오류가 발생했습니다. 사용 dotenv하지 않는 경우rails-now


1

다른 지점에서 pg와 mysql을 사용하고 있습니까? 그렇다면 db 구성 파일을 확인하십시오.


1

나는 나를 위해 일한 것을 게시 할 것이다.

주석 처리

gem 'spring'

더하다 gem 'net-shh'

그리고 실행 bundle install

그리고 서버를 다시 시작하십시오.


1

레일을 업그레이드 한 후이 오류가 발생했습니다. 비활성화 spring하면 문제가 발생한 힌트를 제공합니다.

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

로 변경:

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

문제를 해결했습니다.


0

Vagrant 환경에서 응용 프로그램을 시작하려고 할 때 동일한 오류 메시지가 출력되었습니다. 응용 프로그램 코드가 전혀 변경되지 않은 후 갑자기 잘립니다 (및 앱 실행 시도시 development.rb가 삭제되는 것과 같은 다른 이상한 동작이 뒤 따름).

결국 나는 단순히 VM을 중지하고 다시 시작했으며 모든 것이 정상이므로 파일 동기화 / 공유 폴더에 문제가 있다고 가정하고 있습니까? (사용중인 기본 Vagrant 공유 폴더).


0

콘솔에서 다음을 실행하십시오.

rake tmp:clear
rake secret

0

IF rake rails:update:bin는 추가 오류를 제공합니다.

최근에 서버 유지 관리를 수행하고 있었고 이후에 OpenSSL을 업데이트했습니다.

rake rails:update:bin명령을 실행하려고 할 때 openSSL과 관련된 오류가 표시되었습니다.

내 버전의 Ruby를 다시 빌드하면 ( 'rvm은 RVM으로 ruby-xxx를 다시 설치') 두 오류가 모두 사라졌습니다.

이것은 항상 시도할만한 가치가 있다고 생각합니다.


0

내 문제는 레일 4.2와 함께 오래된 버전의 루비 1.9.3을 사용하고 있다는 것입니다. 2.1.2로 업그레이드하고 깨진 프로젝트를 제거하고 rails 새 블로그를 실행하여 프로젝트를 다시 만들고 새로 만든 앱으로 이동하여 rails 서버를 실행했습니다.


0

나는 방금이 문제가 있었고 다른 require참조 를 삭제하지 않고 gemfile에서 gem을 제거했기 때문에 발생한다는 것을 알았습니다 . 제 경우에는 config / application.rb에서 제거해야했습니다.


0

최근에이 오류가 발생하면 실행 파일에 제안 된 코드로 인해 봄에 의해 발생합니다.

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

원래는 LoadError 프로덕션에서 스프링 자체를 하지만이 코드에 의해 다른 모든로드 오류도 무시됩니다.

따라서 LoadError레일로드 프로세스 (예 : 라우트 / 초기화)에 다른 것이있는 경우 스프링 작업자 시작이 실패하고 스프링이없는 것처럼 모든 것을 다시로드하려고 시도하는 분기가 있습니다.


0

나 에게이 문제는 무엇보다도 rvm-capistrano를 번들로 업그레이드 한 결과로 제시되었습니다.
이 요구 사항을 추가하면이 이전 게시물 에 따라 결국 false 고정 된 것입니다.

gem  'rvm-capistrano',  require: false

추가 문제 일 수 있지만 실행 rake rails:update:bin하면 초기 문제를 해결하는 데 도움이 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.