Ruby on rails 3 不运行时带有gem的cron
我使用thinking sphinx进行搜索。它搜索正确,但问题是每当我添加新记录时,我都必须手动执行rake thinking\u sphinx:索引。因此,要自动运行它,我使用带有cron的gem,但它仍然不会自动发生,我也必须执行 斯芬克斯:指数 或 无论何时-w自动创建索引 以下是config/schedule.rb的代码:Ruby on rails 3 不运行时带有gem的cron,ruby-on-rails-3,cron,thinking-sphinx,whenever,Ruby On Rails 3,Cron,Thinking Sphinx,Whenever,我使用thinking sphinx进行搜索。它搜索正确,但问题是每当我添加新记录时,我都必须手动执行rake thinking\u sphinx:索引。因此,要自动运行它,我使用带有cron的gem,但它仍然不会自动发生,我也必须执行 斯芬克斯:指数 或 无论何时-w自动创建索引 以下是config/schedule.rb的代码: every 10.minutes do rake "thinking_sphinx:index", :environment => :developmen
every 10.minutes do
rake "thinking_sphinx:index", :environment => :development
end
every :reboot do
rake "thinking_sphinx:start",:environment => :development
end
当我执行crontab-l时,我得到以下结果:
# Begin Whenever generated tasks for: store
@reboot /bin/bash -l -c 'cd /home/user/newsvn/alumnicell && RAILS_ENV=development bundle exec rake thinking_sphinx:start --silent'
0,10,20,30,40,50 * * * * /bin/bash -l -c 'cd /home/user/newsvn/alumnicell && RAILS_ENV=development bundle exec rake thinking_sphinx:index --silent'
# End Whenever generated tasks for: store
这不起作用的问题是什么,在哪里
我还将环境更改为开发。默认情况下是生产环境。这两个环境有什么区别?您可以分配日志文件来跟踪错误,然后将其发布到此处 我还建议全局设置
:environment
请尝试以下代码:
set :environment, :development
set :output, 'tmp/whenever.log'
every 10.minutes do
rake "thinking_sphinx:index"
end
every :reboot do
rake "thinking_sphinx:start"
end
我将建议您使用thinking sphinx的增量索引,而不是使用cron jobs每10分钟重建thinking sphinx 如上所述,您只需在模型中添加一个布尔列
delta
,在define\u index
块中设置set\u属性:delta=>true
,然后运行rake ts:rebuild
就这样