Ruby on rails 3 不运行时带有gem的cron

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

我使用thinking sphinx进行搜索。它搜索正确,但问题是每当我添加新记录时,我都必须手动执行rake thinking\u sphinx:索引。因此,要自动运行它,我使用带有cron的gem,但它仍然不会自动发生,我也必须执行

斯芬克斯:指数

无论何时-w自动创建索引

以下是config/schedule.rb的代码:

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

就这样