Ruby on rails 4 `Errno::EExist`在dev中运行rails时链轮出错

Ruby on rails 4 `Errno::EExist`在dev中运行rails时链轮出错,ruby-on-rails-4,asset-pipeline,assets,sprockets,Ruby On Rails 4,Asset Pipeline,Assets,Sprockets,这种情况在我身上发生过多次,我希望有人能对以下错误提供一些见解: Errno::EEXIST at/ 文件存在@dir_s_mkdir-tmp/cache/assets/sprockets/v3.0/Pd 以下是相关的堆栈跟踪: Errno::EEXIST - File exists @ dir_s_mkdir - /home/dev/keithgw-dev/code/myapp/tmp/cache/assets/sprockets/v3.0/Pd: () opt/rubies/ruby-2.2

这种情况在我身上发生过多次,我希望有人能对以下错误提供一些见解:

Errno::EEXIST at/ 文件存在@dir_s_mkdir-tmp/cache/assets/sprockets/v3.0/Pd

以下是相关的堆栈跟踪:

Errno::EEXIST - File exists @ dir_s_mkdir - /home/dev/keithgw-dev/code/myapp/tmp/cache/assets/sprockets/v3.0/Pd:
() opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:252:in `fu_mkdir'
() opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:226:in `block (2 levels) in mkdir_p'
() opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:224:in `block in mkdir_p'
() opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:210:in `mkdir_p'
sprockets (3.6.0) lib/sprockets/cache/file_store.rb:85:in `set'
sprockets (3.6.0) lib/sprockets/cache.rb:212:in `set'
sprockets (3.6.0) lib/sprockets/cache.rb:136:in `set'
sprockets (3.6.0) lib/sprockets/loader.rb:321:in `fetch_asset_from_dependency_cache'
sprockets (3.6.0) lib/sprockets/loader.rb:44:in `load'
sprockets (3.6.0) lib/sprockets/cached_environment.rb:20:in `block in initialize'
sprockets (3.6.0) lib/sprockets/cached_environment.rb:47:in `load'
sprockets (3.6.0) lib/sprockets/base.rb:66:in `find_asset'
sprockets (3.6.0) lib/sprockets/base.rb:73:in `find_all_linked_assets'
sprockets (3.6.0) lib/sprockets/manifest.rb:142:in `block in find'
sprockets (3.6.0) lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'
sprockets (3.6.0) lib/sprockets/path_utils.rb:223:in `block in stat_tree'
sprockets (3.6.0) lib/sprockets/path_utils.rb:207:in `block in stat_directory'
sprockets (3.6.0) lib/sprockets/path_utils.rb:204:in `stat_directory'
sprockets (3.6.0) lib/sprockets/path_utils.rb:222:in `stat_tree'
sprockets (3.6.0) lib/sprockets/legacy.rb:105:in `block in logical_paths'
sprockets (3.6.0) lib/sprockets/legacy.rb:104:in `logical_paths'
sprockets (3.6.0) lib/sprockets/manifest.rb:140:in `find'
sprockets-rails (3.0.4) lib/sprockets/railtie.rb:49:in `precompiled_assets'
sprockets-rails (3.0.4) lib/sprockets/railtie.rb:34:in `asset_precompiled?'
sprockets-rails (3.0.4) lib/sprockets/railtie.rb:214:in `block (3 levels) in <class:Railtie>'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:345:in `precompiled?'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:349:in `raise_unless_precompiled_asset'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:334:in `find_debug_asset'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:216:in `block in lookup_debug_asset'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:229:in `block in resolve_asset'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:228:in `resolve_asset'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:215:in `lookup_debug_asset'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:157:in `block in stylesheet_link_tag'
sprockets-rails (3.0.4) lib/sprockets/rails/helper.rb:156:in `stylesheet_link_tag'
() home/dev/keithgw-dev/code/myapp/app/views/layouts/application.html.erb:8:in `_app_views_layouts_application_html_erb__3086746537636264556_24830040'
Errno::EEXIST-文件存在@dir_s_mkdir-/home/dev/keithgw dev/code/myapp/tmp/cache/assets/sprockets/v3.0/Pd:
()opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:252:in'fu_mkdir'
()opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:226:in`block(2层)in mkdir_p'
()opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:224:in`block in mkdir_p'
()opt/rubies/ruby-2.2.2/lib64/ruby/2.2.0/fileutils.rb:210:in'mkdir_p'
链轮(3.6.0)lib/sprockets/cache/file_store.rb:85:in'set'
链轮(3.6.0)lib/sprockets/cache.rb:212:in'set'
链轮(3.6.0)lib/sprockets/cache.rb:136:in'set'
sprockets(3.6.0)lib/sprockets/loader.rb:321:in'fetch_asset_from_dependency_cache'
链轮(3.6.0)lib/链轮/装载机。rb:44:在“装载”中
链轮(3.6.0)lib/sprockets/cached_环境。rb:20:in`block in initialize'
链轮(3.6.0)lib/sprockets/cached_环境。rb:47:in'load'
链轮(3.6.0)lib/sprockets/base.rb:66:in'find_asset'
链轮(3.6.0)lib/sprockets/base.rb:73:“查找所有链接的资产”
链轮(3.6.0)lib/sprockets/manifest.rb:142:in'block in find'
链轮(3.6.0)lib/sprockets/legacy.rb:114:in“逻辑_路径中的块(2级)”中
链轮(3.6.0)lib/sprockets/path_utils.rb:223:in'block in stat_tree'
链轮(3.6.0)lib/sprockets/path_utils.rb:207:in`block in stat_directory'
链轮(3.6.0)lib/sprockets/path_utils.rb:204:in`stat_目录'
链轮(3.6.0)lib/sprockets/path_utils.rb:222:in'stat_tree'
链轮(3.6.0)lib/sprockets/legacy.rb:105:in“逻辑_路径中的块”
链轮(3.6.0)lib/sprockets/legacy.rb:104:in“逻辑_路径”
链轮(3.6.0)lib/sprockets/manifest.rb:140:in'find'
链轮轨道(3.0.4)lib/sprockets/railtie.rb:49:in“预编译的_资源”
链轮轨道(3.0.4)lib/sprockets/railtie.rb:34:in'asset_precompiled'
链轮轨道(3.0.4)lib/链轮/轨道连接。rb:214:in“块(3层)in”
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:345:in“precompiled?”
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:349:in'raise\u除非预编译资源'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:334:in'find_debug_asset'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:216:in`block in lookup\u debug\u asset'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:229:in'block in resolve_asset'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:228:in'resolve_asset'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:215:in'lookup\u debug\u asset'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:157:in`block in stylesheet_link_tag'
链轮轨道(3.0.4)lib/sprockets/rails/helper.rb:156:in`stylesheet\u link\u tag'
()home/dev/keithgw dev/code/myapp/app/views/layouts/application.html.erb:8:in``应用程序视图布局应用程序html\'erb\'3086746537636264556\'u 2483040'
它似乎无法在
tmp/cache
中创建一个随机子目录来缓存动态编译的资产(我正在
development
模式下运行)。但是,错误消息中显示的目录不存在

清除临时缓存并重新启动rails并不能解决此问题。我唯一能解决这个问题的方法就是在同一系统的其他地方启动另一个rails应用程序。在这之后,我杀死它,重新启动失败的应用程序,它又能工作了。没有真正的证据表明这是一个实际的工作,或者这只是一个巧合

不管怎么说,我很想听听以前经历过这种情况的任何人,或者如果有人能够解释为什么会发生这种情况

谢谢

  • 轨道-4.2.6
  • Ruby-2.2.2

    • 显然,我的谷歌fu今天很强大。我发现了一张针对Sprocket 3.6.0的票据,该票据与不区分大小写的文件系统有关。看

      (无论如何,这是我的情况,在Windows主机上运行vagrant)


      遗憾的是,项目的维护人员似乎仍在讨论修复方法。

      您可以尝试删除
      tmp
      文件夹,在主机中的某个位置创建并链接它

      rm -rf tmp
      mkdir /tmp/rails-app
      ln -s /tmp/rails-app tmp
      

      我现在在一个项目的新克隆上遇到了这个问题,该项目在我的另一台机器上运行良好。我没有更多的信息。谷歌真的很强大。原来就是这样。尽管我在Linux环境中工作,但我的主目录是从windows共享装载的,因此我仍然使用不区分大小写的文件名。回滚链轮成功了,但我正在考虑将我的工作转移到本地安装的卷。谢谢