2010-08-05 103 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分鐘對大多數應用程序來說都不錯,但你應該自己測試一下。

希望這會有所幫助!