Rails弹簧破碎发电机

Yar*_*rin 28 ruby-on-rails-4.1

我正在设置我的第一个Rails 4.1应用程序,它附带Spring,它们是新的预加载器.当我尝试使用他们的generator($ rails generate devise:install)安装Devise时,命令行只是挂起而没有生成任何内容.

如果我从gem文件中删除Spring并再次尝试,则Devise生成器可以正常工作.

有人有任何见解吗?

Spu*_*dun 31

检查当时正在处理的其他一些项目的目录,很可能生成的文件在那里结束.

当你一次使用多个rails应用程序时,spring似乎感到困惑.这可能是导致你的问题的原因

spring作为服务器运行并保持加载rails环境.我认为,如果你一次使用多个项目,那么Spring系统似乎会混淆并使用错误的环境.

我有一个情况,我rails g ...在一个项目中运行,文件是在另一个项目中生成的.令人抓狂的是我一直在重命名并移动其他文件夹,但仍然是生成器继续将文件放在该文件夹中.好像春天已经锁定在该文件夹的inode上.

尝试 DISABLE_SPRING=1 rails g devise:install

或者ps aux |grep spring杀死你看到的所有进程然后运行rails g devise:install

Gemfile这个破碎的行为持续存在,并且在将来使用的时候,正从现在开始弹出春天rails new --skip-spring

如果您想继续使用spring,请尝试遵循这些规则

  • 为每个新项目使用新shell
  • 对于每一个新项目中使用新目录名(如果你这样做rails new blog,它的工作,然后mv blog blog.oldrails new blog再次,它可能无法正常工作.
  • 为了安全(和理智),不时继续杀死所有弹簧服务器.

  • 我只有一个项目,但导轨生成器需要很长时间 - 从gemfile中删除弹簧修复它.因此,春天是问题,但不一定是由于多个项目 (3认同)
  • 确实,春天肯定是破碎的.Rails团队的方法,默认情况下添加一个破碎的宝石. (2认同)

Tho*_*emm 7

您可以$ rails通过传递环境变量来禁用任何命令的spring DISABLE_SPRING=1.

$ DISABLE_SPRING=1 rails generate devise:install
Run Code Online (Sandbox Code Playgroud)

或者,您可以尝试$ spring stop降低弹簧过程.$ rails generate之后运行将启动一个新的弹簧过程,这可能解决临时问题.