rails server bin / rails: 6: предупреждение: уже инициализированная постоянная ошибка APP_PATH

79

Я пробовал несколько вещей, таких как удаление / переустановка рельсов и драгоценных камней, но безрезультатно.

Когда я захожу в свой новый проект и запускаю rails s или bundle exec rails server, я получаю эту ошибку:

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?

Я погуглил, и кажется, что с Spring gem есть ошибка, но я не могу заставить его работать.

тобу
источник
6
У меня была эта проблема, и причина в том, что конфигурация database.ymlадаптера отличалась от адаптера Gemfile.
monteirobrena
На самом деле я также получаю эту ошибку, когда использую массовую рассылку gem. Если я прокомментирую этот драгоценный камень, то ошибка не появится.
Шайлендр Сингх
stackoverflow.com/a/35851557/3728916 решил мою проблему
ImranNaqvi

Ответы:

116

Мне не удалось найти an_initilizer.rb в моем каталоге, и я попытался удалить / установить весенний гем, но это не сработало.

Однако мне наконец удалось заставить его работать.

Видимо есть какой-то конфликт с пружинами и рейками 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 работает.

тобу
источник
Спасибо огромное! Это действительно помогло!
Вадим
1
Отлично, мне тоже пришлось бежать bin/rake db:migrate RAILS_ENV=development
Шадоат
Можно также принять этот ответ; похоже, это работает для многих людей.
Пол Рихтер
1
Похоже, это связано с mysql, если вы включите mysql2 в свой гем-файл. эта ошибка возникает независимо от того, используете ли вы mysql2 в качестве базы данных или нет.
Chris.Zou
У меня были такие же ошибки. Это устранило мою проблему. Спасибо!
cyonder
40

rake rails:update:bin в помощь.

цисолярикс
источник
13

Если вы используете El Capitan (OS X 10.11), Security Integrity Protection (SIP) предотвратит подключение к / usr / lib для исправления mysql. Вместо этого свяжите его с / usr / local / lib:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Jcraigk
источник
Я получаю сообщение об ошибке ln: /usr/local/lib/libmysqlclient.18.dylib: Файл существует .. Есть идеи?
Isaac Y
@IsaacY как насчет опции -f?
geoom
Если вы установили mysql с помощью homebrew или другого метода, вы можете узнать путь к библиотекам, запустив его, и mysql_config --libsвы это сделаетеsudo ln -s mypath /usr/local/lib/libmysqlclient.18.dylib
gosukiwi
6

Это работа для меня.

gem uninstall mysql2

bundle install или же gem install mysql2

кун
источник
3

Я получал ту же ошибку. Spring удален из 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. Так что я просто сбежал

gem удалить rmagick

Выберите вариант Все версии. Тогда попробуйте еще раз

РЕДАКТИРОВАТЬ: это снова произошло со мной только сейчас, потому что я пытался использовать драгоценный камень без установки необходимого базового камня. В моем случае решением было установить omniauth-google перед попыткой использовать omniauth-google-oauth2, но поскольку я не установил, я снова получил ту же ошибку

Betoharres
источник
2

У меня такая же ошибка. У меня были ruby ​​2.1.3 и rails 4.1.6, работающие на Mavericks, а затем я перешел на Yosemite и установил версию rails 4.2.0 на ruby ​​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]

И, как сказал Тобу, я побежал:

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» и нажал «Return».

После всего этого я начал работать и все хорошо.

Благодарю.

Alexventuraio
источник
2

Я получил эту ошибку после обновления postgresql.

$ gem uninstall pg
$ gem install pg

решил эту проблему для меня.

Райан Дум
источник
2

Это случилось со мной после того, как я сделал brew upgrade. Я предполагаю, что это сломало некоторые драгоценные камни с собственными расширениями, хотя не было сообщения об ошибке, указывающего на это.

В итоге я полностью удалил установленные драгоценные камни (в моем случае я полностью удалил и переустановил рубиновую версию, используя rbenv).
Запуск bundle installперекомпилировал собственные расширения, и все снова заработало.

amiuhle
источник
1
В моем случае это было после обновления mysql, поэтому я должен был удалить только гем, который мне нужно было удалить, mysql gemа затем запустить установку пакета.
guzart 09
1

У меня такая же ошибка, возможно, она связана gem dotenv. Инструкции заключались в том, чтобы добавить в Gemfile следующее:

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

Но, как выяснилось позже, dotenv/rails-nowвозникла ошибка. Если вы используете dotenv, не требуйтеrails-now

Antonpot
источник
1

Вы используете pg и mysql в разных ветках? Если да, подтвердите файл конфигурации базы данных.

ysk
источник
1

Я выложу то, что у меня сработало.

Закомментируйте

gem 'spring'

Добавить gem 'net-shh'

и беги bundle install

И перезапустите свой сервер

Colper
источник
1

Я получил эту ошибку после обновления рельсов. Отключение springподскажет, что проблема связана с:

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

Изменился на:

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

Решил проблему.

Эду Ломели
источник
0

У меня было такое же сообщение об ошибке при попытке запустить приложение в среде Vagrant. Он возник из ниоткуда после нулевых изменений в коде приложения (и последовало другое странное поведение, такое как удаление development.rb при попытке запустить приложение).

В конце концов, я просто остановил виртуальную машину и перезапустил ее, все было хорошо, поэтому я предполагаю, что это была проблема с синхронизацией файлов / общими папками, возможно? (используется общая папка Vagrant по умолчанию).

Грег Аннандейл
источник
0

Запустите их в консоли:

rake tmp:clear
rake secret
судьба
источник
0

ЕСЛИ rake rails:update:bin дает дополнительные ошибки:

Я недавно занимался обслуживанием сервера и впоследствии обновил OpenSSL.

Когда я попытался запустить rake rails:update:bin команду, мне выдали ошибку, связанную с openSSL.

После пересборки моей версии Ruby (`rvm переустановить ruby-xxx 'с RVM) обе ошибки исчезли.

Думаю, это всегда стоит попробовать.

DazBaldwin
источник
0

Моя проблема заключалась в том, что я использовал устаревшую версию ruby ​​1.9.3 с рельсами 4.2. Я обновился до 2.1.2, удалил сломанный проект, запустил новый блог rails new, чтобы воссоздать мой проект, зашел в мое недавно созданное приложение и запустил сервер rails, и все заработало.

Донован Томсон
источник
0

У меня только что возникла эта проблема, и я обнаружил, что она вызвана тем, что я удалил драгоценный камень из гем-файла, не удаляя другие requireссылки. В моем случае мне просто пришлось удалить его из config / application.rb.

чашечка
источник
0

Если эта ошибка была недавно, она вызвана Spring из-за предлагаемого кода в исполняемых файлах:

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

Первоначально он ожидает сам LoadErrorfor spring в производстве, но с помощью этого кода все другие ошибки загрузки также будут проигнорированы.

Таким образом, если у вас есть какой-либо другой LoadErrorпроцесс загрузки в рельсах (например, в routes / init), запуск Spring worker завершается неудачно, а затем идет ветка, которая пытается загрузить все снова, как будто пружины не было.

Васфед
источник
0

Для меня эта проблема возникла в результате обновления пакета rvm-capistrano среди прочего.
Добавление этого требует: ложные исправления в конце, как в предыдущем сообщении

gem  'rvm-capistrano',  require: false

Хотя, возможно, это может быть дополнительной проблемой, поскольку запуск, rake rails:update:binвозможно, помог решить первоначальную проблему.

Rich_LogicBox
источник