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


79

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

Коли я заходжу в свій новий проект і запускаю сервер rails s або пучок 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

Насправді я також отримую цю помилку, коли використовую bulkmail gem. Якщо я коментую цей камінь, то помилка не з'являється.
Shailendr singh

stackoverflow.com/a/35851557/3728916 вирішив мою проблему
ImranNaqvi

Відповіді:


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 працює.


Дуже дякую! Це справді допомогло!
Вадим

1
Прекрасно, мені також довелося бігти bin/rake db:migrate RAILS_ENV=development
Shadoath

Можна також прийняти цю відповідь; здається, це працює для багатьох людей.
Paul Richter

1
Здається, це пов’язано з mysql, якщо ви включите mysql2 у свій gemfile. ця помилка буде піднята незалежно від того, використовуєте ви mysql2 як базу даних чи ні.
Chris.Zou,

У мене були ті самі помилки. Це вирішило мою проблему. Дякую!
cyonder


13

Якщо ви працюєте на El Capitan (OS X 10.11), захист цілісності безпеки (SIP) запобіжить приєднанню до / usr / lib для виправлення mysql. Натомість зв’яжіть його з / 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: Файл існує .. Будь-які ідеї?
Ісаак 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

Я отримував ту ж помилку. Вилучено пружину з Gemfile та повторно пов’язано. Насправді це не рішення.

Я знайшов код, який створив цю помилку в config/initializers/an_initializer.rb

require "lib/a_file_i_need"

Я змінив його на

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

додавання #{Rails.root}до шляху допомогло мені позбутися помилки.
Jignesh Gohel 06.03.15

2

Я отримав цю помилку, намагаючись оновити reils 4 та imagemagick та rmagick. Тож я просто побіг

видалити самоцвіт rmagick - -

Виберіть параметр Усі версії. Потім спробуйте ще раз

РЕДАГУВАТИ: Це знову сталося зі мною саме зараз, тому що я намагався використовувати самоцвіт, не встановлюючи необхідний базовий самоцвіт. У моєму випадку рішенням було встановити 'omniauth-google' перед спробою використовувати 'omniauth-google-oauth2', але оскільки я не встановив, я знову отримав ту ж помилку


2

Я отримав ту ж помилку. У мене працювали ruby ​​2.1.3 і rails 4.1.6 на Mavericks, а потім я перейшов до Yosemite і встановив версію 4.2.0 rails 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".

Після всього цього я почав працювати і працювати добре.

Дякую.


2

Я отримав цю помилку після оновлення postgresql.

$ gem uninstall pg
$ gem install pg

вирішив це питання для мене.


2

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

У підсумку я зробив повне видалення встановлених самоцвітів (у моєму випадку я повністю видалив та перевстановив рубінову версію за допомогою rbenv).
Запуск bundle installперекомпілював власні розширення, і все було запущено знову.


1
У моєму випадку це було після оновлення mysql, тому я лише дорогоцінний камінь, який мені довелося видалити, був, 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. Він з’явився з нізвідки після нульових змін коду програми (і слідувала інша дивна поведінка, наприклад, розвиток.rb видалявся при спробі запуску програми).

Врешті-решт я просто зупинив віртуальну машину та перезапустив її, тоді все було нормально, тому я припускаю, що це була проблема з синхронізацією файлів / спільними папками? (використовується типова спільна папка Vagrant).



0

ЯКЩО rake rails:update:bin дає додаткові помилки:

Нещодавно я займався сервісним обслуговуванням серверів і згодом оновив OpenSSL.

Коли я спробував запустити rake rails:update:binкоманду, у мене з'явилася помилка, що стосується openSSL.

Відновивши мою версію Ruby (`rvm перевстановити ruby-xxx 'за допомогою RVM), обидві помилки зникли.

Це, мабуть, варто спробувати завжди.


0

Моя проблема полягала в тому, що я використовував застарілу версію ruby ​​1.9.3 із рейками 4.2. Я оновив версію 2.1.2, видалив непрацездатний проект, запустив reils новий блог, щоб відтворити свій проект, перейшов до мого нещодавно створеного додатка та запустив сервер rails, і це спрацювало.


0

Я просто мав цю проблему і виявив, що вона спричинена тим, що я вилучив самоцвіт із gem-файлу, не видаляючи інші requireпосилання. У моєму випадку мені просто довелося видалити його з config / application.rb.


0

Якби ця помилка була нещодавно, вона спричинена spring, через запропонований код у виконуваних файлах:

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

Спочатку він очікує, що LoadErrorсам весна буде у виробництві, але за цим кодом усі інші помилки навантаження також будуть ігноруватися.

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


0

Для мене це видання було представлено як результат іншого оновлення пакета rvm-capistrano.
Додавання цього вимагає: помилкові виправлені речі врешті-решт згідно з цим попереднім повідомленням

gem  'rvm-capistrano',  require: false

Хоча, можливо, може бути додатковою проблемою - оскільки запуск, rake rails:update:binможливо, допоміг очистити початкову проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.