没有弹簧的Rails跑步者

Yan*_*nis 11 ruby ruby-on-rails

我在ubuntu设置上有rails 4.2 + sidekiq,我每小时都会用cron开始我的工作

bin/rails runner -e production 'MyJob.perform_later'
Run Code Online (Sandbox Code Playgroud)

这基本上需要一份工作并将数据放到redis中,因此sidekiq可以接受并从那里开始.但每次我这样做,我有这个春天过程中卡住和等待的东西(消耗内存)

ps aux | grep spring
root      Sl   07:13   0:00 spring server | myapp | started 6 secs ago
root      Ssl  07:13   0:03 spring app    | myapp | started 6 secs ago | production mode
Run Code Online (Sandbox Code Playgroud)

有时我看到其中的10个.有没有办法不启动弹簧服务器?

谢谢.

jan*_*oeh 16

如果你想保持一般的弹簧,你可以通过在DISABLE_SPRING环境变量前面加上一个命令来暂时禁用spring :

DISABLE_SPRING=1 bin/rails runner -e production 'MyJob.perform_later'
Run Code Online (Sandbox Code Playgroud)

编辑:感谢Tom Lobato和tpett的纠正.


Kos*_*sis 15

发生这种情况是因为您正在使用springgem并且您的bin文件夹已被"弹化".

如果您查看bin/rails文件,您将看到spring已加载,然后继续运行您从中请求的任何内容.

您可以通过运行"取消弹出"您的bin文件夹

bin/spring binstub --remove --all
Run Code Online (Sandbox Code Playgroud)

这当然意味着您选择退出春天为您提供的所有性能优势.这应该适用于生产环境.实际上,建议您不要在生产环境中安装弹簧 [1].

因此,我建议您修改Gemfile,并把springdevelopment组.在制作中,您通常会执行以下操作:

bundle install --without development test
Run Code Online (Sandbox Code Playgroud)

这样春天永远不会进入你的生产服务器.另请参阅Github上的相关问题.

-

1.Spring项目自述文件


小智 6

这是DISABLE_SPRING=1不是ENV=DISABLE_SPRING