2010-08-05 75 views
0

所以每天早上启动我的服务器,我需要做下面的任务..设置IRB的bash别名?

>> sunspot-solr stop 
>> sunspot-solr start 
>> script/console 
>> Organization.reindex 
>> Event.reindex 
>> Deal.reindex 
>> exit 
>> script/server 

有什么办法,我可以建立一个快捷方式在我的〜/ .profile文件,以进行这一切的别名我没有我每天打字吗?

像这样虽然不起作用?

alias blam='cur && sunspot-solr stop && sunspot-solr start && script/console && Organization.reindex && Event.reindex && Deal.reindex && exit && script/server' 
+0

为什么不把它放在脚本中并从cron中调用它? – 2010-08-05 14:08:34

+0

你为什么不写一个shell脚本?别名可以用于简单的事情,但不适用于此。 – tokland 2010-08-05 14:09:16

回答

1

也许这会缓解一些痛苦?

#Rakefile 
desc "Reindex the organizations, events, and deals Solr indexes." 
task :reindex => :environment do 
    Organization.reindex 
    Event.reindex 
    Deal.reindex 
end 

然后每天晨跑

> sunspot-solr stop 
> sunspot-solr start 
> rake reindex 
> script/server 
+0

即使我没有调用脚本/控制台,这些命令是否可以工作? – Trip 2010-08-05 15:46:43

+0

**调用reindex(first_time) **执行reindex rake中止! 未初始化的常量组织 – Trip 2010-08-05 15:52:41

+0

太棒了!感谢更新!现在运行 – Trip 2010-08-05 15:55:14

1

这是我第一次的StackOverflow职位,这是一个老问题,但我觉得我可以以某种方式作出贡献:d 重建Solr的指数周期性是非常昂贵的任务,你应该避免在生产中做这样的事情!您正在寻找可以通过三种方式能最好地实现什么:

1 - 编辑您sunspot.yml并添加行

auto_commit_after_request = true

这将告诉黑子更新索引每次新模型条目被保存(或删除)。这将保持您的索引更新,但可能会很昂贵。

2 - 创建一个rake任务(可以用的cron在DelayedJob工人运行)这样

task :update_index => :environment do
Sunspot.commit_if_dirty
end

这比做每个模型更新后提交便宜得多,但承担请注意,这会给您的索引带来最终一致性的问题,这对于增加而言很好,但对于删除可能会令人讨厌:它会在您的索引中生成孤立条目。解决此问题的第三种方法也是一个问题 - >

3 - 编辑您的solrconfig.xml文件并将autoCommit功能设置为maxTime提交之间的任意时间间隔(请记住使用以毫秒为单位的时间间隔)。 5分钟对大多数应用程序来说都不错,但你应该自己测试一下。

希望这会有所帮助!