Rails弹簧破碎发电机

时间:2014-04-19 03:38:02

标签: ruby-on-rails-4.1

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

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

任何人都有见解?

4 个答案:

答案 0 :(得分:31)

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

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

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,则可能无效。
  • 为了安全(和理智)的缘故,不时地继续杀死所有弹簧服务器。

答案 1 :(得分:7)

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

$ DISABLE_SPRING=1 rails generate devise:install

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

答案 2 :(得分:3)

rails 5.1.4对于响应者宝石存在同样的问题

我列出了以前的解决方案:

  • 关闭终端并打开新的
  • 运行命令
    DISABLE_SPRING=1 bundle exec rails generate responders:install
    或将其导出为环境变量
    export DISABLE_SPRING=1
  • 为您的应用杀死正在运行的弹出过程
    ps ax | grep spring | grep YOUR_APP_NAME | cut -f1 -d' ' | xargs kill

答案 3 :(得分:1)

这是一篇很老的帖子,但我认为我的经历可能有助于某些人......

rails 5.0.1

在我搞砸了一些设计生成的文件(我是铁杆和学习的新手)后,我遇到了同样的问题,而且我尝试使用rails destroy devise模型而且卡住了,尝试了很多次,没有任何效果。

用谷歌搜索,来到这里,尝试排除春天的宝石,它起作用,再次添加了春天宝石,并且设计再次被卡在一切。

我刚刚关闭了终端并打开了新终端,但它确实有效。