rails中的奇怪错误 - 缺少帮助程序

时间:2015-01-10 01:01:24

标签: ruby-on-rails-4 schema helper

我不确定,但这可能与崩溃的计算机有关。重新启动后(崩溃后)我得到一个失败的帮助器错误,其中帮助程序名称错误。切换分支对结果没有影响。

错误是:

  

缺少帮助文件助手// users / xxxx / sites / xxxx / app / helpers / accounts_helper.rb_helper.rb

我尝试更新宝石,卸载了rails并重新安装,检查了帮助程序名称以及包含的任何帮助程序。我还审查了git日志并检查了最近更改的代码。没有运气。

堆栈跟踪

Started GET "/" for 127.0.0.1 at 2015-01-09 17:53:57 -0700
  ActiveRecord::SchemaMigration Load (1.1ms)  SELECT "schema_migrations".* FROM "schema_migrations"

AbstractController::Helpers::MissingHelperError - Missing helper file helpers//users/xxxx/sites/xxxx/app/helpers/accounts_helper.rb_helper.rb:
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:151:in `rescue in block in modules_for_helpers'
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:148:in `block in modules_for_helpers'
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:144:in `modules_for_helpers'
  actionpack (4.2.0) lib/action_controller/metal/helpers.rb:93:in `modules_for_helpers'
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:108:in `helper'
  actionpack (4.2.0) lib/action_controller/railties/helpers.rb:17:in `inherited'
  app/controllers/application_controller.rb:1:in `<top (required)>'
  activesupport (4.2.0) lib/active_support/dependencies.rb:457:in `block in load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:647:in `new_constants_in'
  activesupport (4.2.0) lib/active_support/dependencies.rb:456:in `load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:354:in `require_or_load'
  activesupport (4.2.0) lib/active_support/dependencies.rb:494:in `load_missing_constant'
  activesupport (4.2.0) lib/active_support/dependencies.rb:184:in `const_missing'
  app/controllers/pages_controller.rb:1:in `<top (required)>'
  activesupport (4.2.0) lib/active_support/dependencies.rb:457:in `block in load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:647:in `new_constants_in'
  activesupport (4.2.0) lib/active_support/dependencies.rb:456:in `load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:354:in `require_or_load'
  activesupport (4.2.0) lib/active_support/dependencies.rb:494:in `load_missing_constant'
  activesupport (4.2.0) lib/active_support/dependencies.rb:184:in `const_missing'
  activesupport (4.2.0) lib/active_support/inflector/methods.rb:261:in `block in constantize'
  activesupport (4.2.0) lib/active_support/inflector/methods.rb:259:in `constantize'
  activesupport (4.2.0) lib/active_support/dependencies.rb:566:in `get'
  activesupport (4.2.0) lib/active_support/dependencies.rb:597:in `constantize'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:69:in `controller_reference'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:59:in `controller'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:38:in `serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
  bullet (4.14.0) lib/bullet/rack.rb:10:in `call'
  meta_request (0.3.4) lib/meta_request/middlewares/app_request_handler.rb:13:in `call'
  meta_request (0.3.4) lib/meta_request/middlewares/meta_request_handler.rb:13:in `call'
  rack (1.6.0) lib/rack/etag.rb:24:in `call'
  rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
  rack (1.6.0) lib/rack/head.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
  activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:57:in `call'
  rack-contrib (1.2.0) lib/rack/contrib/response_headers.rb:17:in `call'
  meta_request (0.3.4) lib/meta_request/middlewares/headers.rb:16:in `call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:18:in `middleware_call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.0) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
  rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
  rack-mini-profiler (0.9.2) lib/mini_profiler/profiler.rb:300:in `call'
  railties (4.2.0) lib/rails/engine.rb:518:in `call'
  railties (4.2.0) lib/rails/application.rb:164:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  rack (1.6.0) lib/rack/content_length.rb:15:in `call'
  rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
  /Users/Hank/.rvm/rubies/ruby-2.2.0-rc1/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /Users/Hank/.rvm/rubies/ruby-2.2.0-rc1/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /Users/Hank/.rvm/rubies/ruby-2.2.0-rc1/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

17 个答案:

答案 0 :(得分:50)

问题似乎已在最新版本的ruby,ruby 2.2.0中引入。

尝试此实验:

在rails console /或irb中

[1] pry(main)>File.expand_path ("./") 
=> "/users/xxxx/Sites/xxxx"

并在终端窗口中:

]$ pwd
/users/xxxx/sites/xxxx

看到不同的情况?如果你得到了,那么在积极支持的深处,正则表达向南。一个修复是删除“sites”目录并重新创建。也可以使用finder重命名sites目录,将其重命名为“foobar”,然后返回“sites”。

第h

(来自日本本页) http://translate.google.com/translate?hl=en&sl=ja&u=http://d.hatena.ne.jp/jiikko/20150108&prev=search

当我和另一个人一起调试时,路径中有一个混合大小写的目录名就足够了。我们将它重命名为'farknerd',然后将原始版本重命名为原文,除了所有小写字母外,它都有效。

答案 1 :(得分:11)

对我来说,文件夹&#39; sites&#39;只需要重命名,而不是整个目录。

从我的用户根目录

我做了这个......

mv sites sites1
mv sites1 sites

答案 2 :(得分:8)

根据Rob的说明,我发现有必要将文件路径中的每个文件夹重命名为+小写,直到&#39;用户&#39;在我的错误消失之前。

答案 3 :(得分:3)

我也是一个案例问题。我最初在 C:\ users \ pxxx \ projects \ odot 文件夹中抛出了上述错误。当我改为 C:\ Users \ Pxxx \ projects \ odot 时,它似乎正常工作

答案 4 :(得分:1)

我遇到了同样的问题,但没有用户创建的目录中包含大写字母......只有/Users

我尝试升级到ruby 2.2.1 - 这没有解决它。

我非常犹豫地通过做同样的区分大小写&#34;修复&#34;在我的/Users目录中:

cd /
sudo mv Users users1
sudo mv users1 users

我还没有看到是否会破坏其他任何东西......

答案 5 :(得分:1)

我第一次创建helpers目录后出现此错误。

运行spring stop并重试后问题就消失了。

答案 6 :(得分:1)

这一直困扰着我。尝试重命名文件或目录时,我没有找到任何乐趣。

然而,我确实找到了一个非常简单的修复方法。只需进入项目的主目录并运行&#39;捆绑安装&#39; 。它安装了所有的gem依赖项(没有覆盖我编写的任何数据),这有效地修复了任何问题。

打开rails服务器并欢呼,恢复正常服务。

希望有所帮助!

答案 7 :(得分:1)

我使用粉末 gem时遇到了同样的问题。以下是我修复它的方法:

powder unlink
powder link

答案 8 :(得分:1)

我遇到了同样的问题,显然与Dropbox有关,但并不像其他人所说的那样区分大小写。

按照@ Rob的回答,[1] pry(main)>File.expand_path ("./")的输出结果为:

/Users/xxxx/dropbox/xxxx

并且]$ pwd的输出也导致:

/Users/xxxx/dropbox/xxxx

按照@ Beengie的说明,从我的用户根目录,我做了:

mv Dropbox Dropbox1
mv Dropbox1 Dropbox

这解决了我的问题 - 直到我重新启动,此时我必须再次执行操作。我还在寻找永久性修复方法。

答案 9 :(得分:1)

问题..

对我来说错误的同样问题

 "missing helper file app/helpers/application_helper.rb_helper.rb"

该应用程序位于目录树

/Users/grantsayer/Documents/Work/recipes

所以在进行测试以显示路径时,无论是在终端内还是在红宝石环境中,我都发现了以下内容:

<强> 1。 Ruby环境

  

Grants-MacBook-Pro:Recipes grantsayer $ irb

     

2.2.0:001&gt;

     

2.2.0:002&gt; File.expand_path( “./”)           =&GT; “/用户/ grantsayer /文档/工作/配方”

<强> 2。 Unix终端

  

Grants-MacBook-Pro:Recipes grantsayer $ pwd        /用户/ grantsayer /文档/工作/配方

在此阶段运行rails服务器并导航到http://localhost:3000会导致错误的应用程序帮助程序错误。正如其他人所描述的那样,这个错误似乎是ruby中导致文件路径上的大小写转换的错误。

我通过将食谱文件夹重命名为食谱解决了这个问题,以便 irb 中的ruby环境检查与本地文件系统匹配。

答案 10 :(得分:0)

我的一个目录中有一个破折号:the-mission也导致错误。除了确保所有父目录都是小写(包括将桌面更改为桌面)之外,还要确保目录名中的唯一字符是字母。

答案 11 :(得分:0)

我得到了与上面相同的错误,但这不是由于案件问题。它最终归结于各种因素。我安装了两个ruby版本管理器-rvm和rbenv-我使用的是旧的gem安装程序。我不得不卸载rvm(如何从我的系统中删除RVM(Ruby版本管理器)?)并重新安装rbenv(brew重新安装rbenv)并升级到最新版本的ruby。然后我不得不更新rubygems(gem update --system)。然后,重新安装所有宝石并重新启动,一切都已修复。

基本上,我的ruby经理指向旧版本的ruby并使用过时版本的gem installer(2.2.0)。只需升级到rubygems,您就可以解决问题。

我花了一天半的时间来解决这个问题。希望这可以节省一些时间和挫折。

答案 12 :(得分:0)

在Ruby 2.2.0上遇到同样的问题,我只是通过从

更改文件夹结构来修复它
/Users/xxx/Documents/Ruby/xxxx

/Users/xxx/Documents/ruby/xxxx

小写文件夹名称

答案 13 :(得分:0)

我正在运行2.2.0并按照@Rob的说法进行操作,发现由于它有一个大写的名称,这是我的应用程序根目录。我也没有将应用程序保留在Sites目录中,而是另一个兄弟目录。

答案 14 :(得分:0)

在我的情况下我使用的是Windows。使用Git shell,我在尝试从thinkbot安装gem管理时不断收到此错误。不断给我错误的命令&#34; AbstractController :: Helpers :: MissingHelperError&#34;,是:

$ rails generate administrate:install

我没有将我的文件夹重命名为小写,因为有很多答案建议。我改为使用了窗口的cmd。它运作得很好。

答案 15 :(得分:0)

在我更新了Rubymine之后发生了这件事。我所做的只是将我的网站文件夹从HelloWord更改为helloword。删除了资本和其他符号,它工作正常。

答案 16 :(得分:0)

使用命令生成新的控制器后,我遇到了这个问题

rails generate controller Microposts

它破坏了我的整个测试套件。

如果我使用rails destroy controller Microposts

反转了命令

它将再次变为绿色。

我通过运行gem update

来解决了问题。

销毁控制器后,一旦更新宝石,便再次生成它。

奇怪的是,重新生成时我收到了此消息:

“名称'MicropostsHelper'已在您的应用程序中使用,或已由Ruby on Rails保留。请选择一个替代方法,或使用--force跳过此检查并再次运行此生成器。”

在我更新自己的宝石之前没有出现,并且不再有任何问题。

我使用RVM并用于确保我在我的应用所使用的同一版本的Ruby上运行命令。