rails服务器bin / rails:6:警告:已经初始化的常量APP_PATH错误


79

我已经尝试了很多事情,例如卸载/重新安装rails和gems,但无济于事。

当我进入新项目并运行rails或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时仍然收到该错误?

我已经在Google上搜寻了一下,似乎spring gem出现了错误,但是我似乎无法使其正常工作。


6
我遇到了这个问题,原因是上的database.yml适配器配置不同Gemfile
monteirobrena 2014年

实际上,当我使用bulmmail gem时,我也会遇到此错误。如果我评论此gem,则错误不会出现。
Shailendr singh 2015年

Answers:


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 2014年

1
bin/rake db:migrate RAILS_ENV=development
太好了

最好也接受这个答案。它似乎对很多人有用。
Paul Richter 2014年

1
如果您在gemfile中包含mysql2,则它似乎与mysql有关。无论您是否使用mysql2作为数据库,都会出现此错误。
克里斯·邹

我有同样的错误。这解决了我的问题。谢谢!
cyonder 2015年


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,则可以通过运行找出库路径,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中移除spring并重新捆绑。虽然不是一个真正的解决方案。

我在以下位置找到了导致此错误的代码 config/initializers/an_initializer.rb

require "lib/a_file_i_need"

我换了

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

追加#{Rails.root}到路径帮助我摆脱了错误。
Jignesh Gohel'3

2

我通过尝试更新rails 4以及imagemagick和rmagick来得到此错误。所以我就跑了

gem卸载rmagick

选择所有版本选项。然后再试一次

编辑:这一次又一次发生在我身上,因为我尝试使用一个gem而不安装所需的基本gem。在我的情况下,解决方案是在尝试使用“ omniauth-google-oauth2”之前先安装“ omniauth-google”,但由于我没有安装,所以我再次遇到相同的错误


2

我遇到了同样的错误。我在Mavericks上运行了ruby 2.1.3和rails 4.1.6,然后迁移到优胜美地并安装了ruby 2.1.5的4.2.0 rails版本,而我在先前版本中制作的应用程序无法与新版本一起使用,因此我使用RVM制作了一些gem set并安装了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”,然后按了回车键。

毕竟,我开始工作并进展顺利。

谢谢。



2

这是我做完一件事后发生的brew upgrade。我的猜测是,即使没有错误消息指出,这也破坏了一些具有本机扩展的功能。

我最终要做的是完全删除了已安装的gem(在我的情况下,我使用完全卸载并重新安装了ruby版本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吗?如果是,请确认数据库配置文件。


1

我将发布对我有用的内容。

注释掉

gem 'spring'

gem 'net-shh'

并运行 bundle install

并重新启动服务器


1

升级rails后,我收到此错误。禁用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

如果 rake rails:update:bin给出其他错误:

我最近一直在进行一些服务器维护,并随后更新了OpenSSL。

当我尝试运行rake rails:update:bin命令时,出现与openSSL相关的错误。

重建了我的Ruby版本(使用RVM的`rvm reinstall ruby​​-xxx'),两个错误都消失了。

我猜这总是值得尝试的。


0

我的问题是我使用的过时版本的ruby 1.9.3和rails 4.2。我升级到2.1.2,删除了损坏的项目,运行了rails新博客以重新创建我的项目,导航到我新创建的应用程序中并运行了rails服务器,并且该服务器正常工作。


0

我只是遇到了这个问题,发现这是由我从gemfile中删除一个gem而不删除其他require引用引起的。就我而言,我只需要从config / application.rb中删除它即可。


0

最近发生此错误,是由spring引起的,因为它在可执行文件中建议使用以下代码:

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

它最初期望LoadError在生产中本身使用spring,但是通过此代码,所有其他负载错误也将被忽略。

因此,如果您LoadError在Rails加载过程中还有其他任何问题(例如,在route / init中),spring worker启动会失败,然后分支会尝试再次加载所有内容,就像没有spring一样。


0

对我来说,这个问题是由于捆绑升级rvm-capistrano等问题而出现的。
最后添加此require:false,根据之前的文章

gem  'rvm-capistrano',  require: false

尽管可能是一个额外的问题-因为运行rake rails:update:bin可能有助于清除最初的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.