避免使用cron多次加载rails环境

时间:2012-06-30 15:47:19

标签: ruby-on-rails ruby-on-rails-3

我正在使用“随时”宝石为我生成一条cron线。

0 5 * * * /bin/bash -l -c 'cd /projects/my_rails && rails runner -e development "Indexing::LikeIndexer.index_deltas"'

(上面的cron仅用于测试,并且不会在生产中频繁运行=))

这个和其他crons(如thinking_sphinx的)需要加载整个rails环境才能执行代码。 (Rails cron with whenever, setting the environment

是否有任何gem运行我的rails环境并允许它执行代码而无需重新加载整个环境?

我试图通过旋转来解决这个问题,但是当我将文件传递给它时,似乎旋转无法识别我的模型。

1 个答案:

答案 0 :(得分:2)

你意识到你的榜样每天凌晨5点都在运行。如果您每天无法重新加载一次环境,那么您可能遇到的问题就是您尝试修复的问题:)

关于你的问题,不重新加载环境的唯一方法是让一个进程在加载环境的情况下留在内存中,然后自行分叉以完成工作。这是加速测试spork背后的想法。

我认为你的问题有点过于强大。

你也可以做一个rake任务,不依赖于环境来完成你的工作或做一个控制器动作和cron一个curl命令(当然有某种认证机制)