为IRB设置bash别名?

时间:2010-08-05 13:29:35

标签: ruby-on-rails 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'

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这是我的第一篇StackOverflow帖子,这是一个老问题,但我觉得我可以以某种方式贡献:D 定期重建Solr索引是一项非常昂贵的任务,你应该避免在生产中做这样的事情!您正在寻找的内容可以通过三种方式实现:

1 - 编辑sunspot.yml并添加行

auto_commit_after_request = true

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

2 - 创建一个rake任务(可以在DelayedJob worker中使用cron运行),如下所示

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

这远比在每次模型更新后执行提交要便宜得多,但请记住,这会引入索引的最终一致性问题,这对于添加很好但是对于删除可能很讨厌:它会生成孤立条目在你的索引中。这也是解决此问题的第三种方法的问题 - >

3 - 编辑您的solrconfig.xml文件,并在autoCommit之间设置一个maxTime任意间隔的任意间隔(记住使用时间以毫秒为单位)。对于大多数应用程序来说,5分钟会很好,但你应该自己测试一下。

希望这有帮助!