纯粹 tise

经验是从磨练中积累出来的

ruby 社区应该更加务实一点

  上周的的周六和周末参加的每年一次的 Rubyconf

  参加完第一天的大会,以前的一位同事跟我说,“他们玩的好高端的,他们更像是 Hacker,玩的东西都飘在空中”。

  是呀,我也是这么认为的,ruby圈子里面更多的人是在玩,而不是在踏实的做事情。现在用于编写网站的动态语言有 PHP,Ruby, Python。PHP 就是专门用来写网站的,它已经存在多年,有很多成熟的架构,选择 PHP来开发的往往都是有实力的大公司。剩下的就是市场较小的 Python 和 Ruby(其他的语言都不在这里讨论,在 Ruby 圈子里讨论的也不多。)

  相比之下,Python 圈子比 Ruby 更加务实。得出这样的结论是因为,我看到了更多的招聘帖是关于 Python 。

  Ruby 圈子里也有不少的很厉害的公司,可那些都不在国内。

  务实一点把产品做好,引用先人的一句话,“打仗的目的是胜利,不是开最棒的坦克车”

crontab 执行 ruby 脚本

最近在折腾使用服务器发微博的功能,这个功能实在是太折腾人了,开始的时候使用最通俗的方式,用 OAuth 去认证,然后再去发微博,不知道怎么的,OAuth已经不被支持,只支持 OAuth 2.

需要在服务器端发微博,每个小时去更新一次微博,还要读取数据库,加上一些逻辑判断。

这些需求可以用 rails去实现,可是不能够定时去执行,需要使用 linux的 crontab功能。

记得很久以前用过一次,是用任务备份数据库的资料,现在已经忘记了。

凭着印象去使用 crontab,开始的时候总是不能够执行命令。开始时怀疑是自己用错了。

* * * * * sudo echo 'hello world!' >> /home/deploy//text.txttaill -f /home/deploy/text.txt

用这两条命令去调试,发现没错。

后来才知道,很多细节的地方不知道。

首先 crontab任务列表里面路径要写全,好像 ~/text.txt 是不支持的。

命令行里直接 ruby ~/xxx.rb 就可以了 可是在 crontab列表里面就不行,要写出 ruby 的完整路径。

使用 which ruby 查出 ruby 的完整路径。

推荐给大家的方法就是写一个脚本文件,然后用 crontab定时执行这个脚本文件。

写一个脚本文件可以方便的去执行这些任务。

这是 crontab任务列表的样式,然后写一个 sh脚本文件。

* * * * * root /bin/bash /home/deploy/weibo.sh

这是脚本文件的样式

#!/usr/bin/ /home/deploy/.rvm/rubies/ruby-1.9.3-p385/bin/ruby /home/deploy/weibo.rb

脚本文件中不要忘了写上 #!/usr/bin/ 这行来加载环境变量

有人说还要 source ~/.bashrc 去重写加载 bash脚本,不够我测试的时候没有这一行也没有问题,不过可能是 ubuntu的系统没问题,其他的系统就不知道了

weibo.rb 文件就是普通的 rb脚本文件,ruquire 一些库,然后执行一些程序。

crontab 还是有很多坑的,希望大家注意。