rails server bin / rails:6:警告:已初始化的常量APP_PATH错误

时间:2014-05-01 06:00:12

标签: ruby-on-rails

我尝试了很多东西,例如卸载/重新安装rails和gem,但无济于事。

当我进入我的新项目并运行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]

在我的bin / rails中,我看到了这段代码:

#!/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时遇到错误吗?

我用谷歌搜索过,看起来弹簧宝石出现了错误,但我似乎无法让它发挥作用。

20 个答案:

答案 0 :(得分:115)

我在我的目录中找不到an_initilizer.rb,我尝试卸载/安装spring gem但它没有用。

然而,我确实设法最终使它发挥作用。

显然与spring和rails 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 :(得分:39)

rake rails:update:bin救援。

答案 2 :(得分: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

答案 3 :(得分:5)

这对我有用。

gem uninstall mysql2

bundle installgem install mysql2

答案 4 :(得分:3)

我得到了同样的错误。从Gemfile中删除了弹簧并重新捆绑。虽然不是真正的解决方案。

我找到了在config/initializers/an_initializer.rb

中创建此错误的代码
require "lib/a_file_i_need"

我改为

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

答案 5 :(得分:2)

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

  

gem uninstall rmagick

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

编辑:刚刚和我一起开心,因为我尝试使用宝石而不安装所需的基础宝石。在我的情况下解决方案是在尝试使用'omniauth-google-oauth2'之前安装'omniauth-google',但因为我没有安装我再次遇到同样的错误

答案 6 :(得分:2)

在做brew upgrade之后发生了这件事。我的猜测是,这打破了一些带有原生扩展的宝石,即使没有指向它的错误消息。

我最终做的是彻底删除已安装的宝石(在我的情况下,我完全卸载并使用rbenv重新安装了ruby版本。) 运行bundle install重新编译了本机扩展,一切都在重新运行。

答案 7 :(得分:2)

升级postgresql后我收到此错误。

$ gem uninstall pg
$ gem install pg

为我解决了这个问题。

答案 8 :(得分:1)

升级rails后我收到此错误。禁用spring会向我提示问题是:

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

更改为:

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

解决了这个问题。

答案 9 :(得分:1)

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

评论

gem 'spring'

添加gem 'net-shh'

并运行bundle install

然后重新启动服务器

答案 10 :(得分:1)

你在不同的分支机构中使用pg和mysql吗?如果是,请确认db config file。

答案 11 :(得分:1)

我收到同样的错误,它与gem dotenv有关。 说明是将以下内容添加到Gemfile:

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

但事实证明,dotenv/rails-now导致错误。如果您使用dotenv请求rails-now

答案 12 :(得分:1)

我得到了同样的错误。我在小牛队上运行了ruby 2.1.3和rails 4.1.6然后我迁移到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'并点击返回。

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

感谢。

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

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

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

重建了我的Ruby版本(`rvm重新安装ruby-x.x.x'使用RVM),两个错误都消失了。

我猜这总是值得一试。

答案 15 :(得分:0)

我刚遇到这个问题,发现它是由于我从gemfile中删除了一个gem而没有删除其他require引用这一事实。在我的情况下,我只需要从config / application.rb中删除它。

答案 16 :(得分:0)

在控制台中运行这些:

rake tmp:clear
rake secret

答案 17 :(得分:0)

最近有这个错误,它是由spring引起的,因为它在可执行文件中建议了代码:

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

它原本期望弹簧本身生成LoadError,但是通过此代码,所有其他加载错误也将被忽略。

因此,如果在rails加载过程中有任何其他LoadError(例如在routes / init中),spring worker启动失败,然后会出现尝试再次加载所有内容的分支,就像没有弹簧一样。

答案 18 :(得分:0)

对我来说,这个问题是由于捆绑升级rvm-capistrano等问题而出现的 添加此内容需要:根据之前的Camera#takePicture

,最后修复错误
gem  'rvm-capistrano',  require: false

虽然可能是一个额外的问题 - 因为正在运行rake rails:update:bin可能有助于解决最初的问题。

答案 19 :(得分:0)

尝试在Vagrant环境中启动应用程序时,我输出了相同的错误消息。在对应用程序代码进行零更改后(以及其他奇怪的行为,例如在尝试运行应用程序时删除了development.rb),它突然冒出来。

最后我简单地停止了VM&重新启动它,一切都很好,所以我假设它可能是文件同步/共享文件夹的问题? (正在使用默认的Vagrant共享文件夹)。