teppeilog

ちょっとずつエンジンかかってきた

Archive for the ‘rails’ tag

whenever の使い方

leave a comment

Railsアプリケーションで定期的に何かを実行したいという場合、wheneverを使用するという選択肢があるかと思います。wheneverは要するにLinuxのcronの設定をrubyから行えるというもの。environment.rbの設定も引き継いだrubyスクリプトを実行できるので、DBへのアクセスも簡単。

まずはインストール。

sudo gem install whenever

Railsディレクトリで

wheneverize

を実行すると ./config/schedule.rb が作成される。このファイルにcron設定を書く。

schedule.rbの中には書き方のサンプルがあるので多分大丈夫。たとえば sample.rb ってスクリプトを1時間毎00分に動かしたいときは

every 1.hours, :at => 0 do
  set :output, {:error => 'log/error.log', :standard => 'log/cron.log'}
  runner './sample.rb'
end

runner は ./script/runner のこと。

cron設定を反映するには

whenever --update-crontab

内容を確認するには

crontab -l

logをみて No such file or directory のエラーが出ている場合、runnerに書かれてるrubyのパスが間違っている場合があります。デフォルトが #!/usr/bin/env ruby となっているので、環境に合わせてパスを修正する必要があります。

このエントリーをはてなブックマークに追加
はてなブックマーク - whenever の使い方
Share on Facebook

Written by teppei

1月 12th, 2012 at 3:55 pm

Posted in プログラミング

Tagged with ,

ziprubyでディレクトリごと圧縮

leave a comment

RubyでZipを作成する方法はざっと調べた限りziprubyとrubyzipあたりが使われているっぽい。とりあえずziprubyをチョイスして、ディレクトリを含めた圧縮を実装。

Read the rest of this entry »

このエントリーをはてなブックマークに追加
はてなブックマーク - ziprubyでディレクトリごと圧縮
Share on Facebook

Written by teppei

1月 20th, 2011 at 3:50 am

Posted in プログラミング

Tagged with ,

RailsでXMLをBuilderすると日本語が文字参照になる対策

leave a comment

RailsでXMLを生成・出力するので Builder::XmlMarkup を使ってみたんだけど、日本語が文字参照になっちゃって使い勝手がよくない。ちょっと調べてみたらStringクラスのto_xsメソッドが原因のよう。そこでto_xsメソッドを例えばenvironment.rbでオーバーライドしちゃう。

class String
  def to_xs
    ERB::Util.html_escape(self)
  end
end

今のところ問題はない。

このエントリーをはてなブックマークに追加
はてなブックマーク - RailsでXMLをBuilderすると日本語が文字参照になる対策
Share on Facebook

Written by teppei

1月 18th, 2011 at 3:43 pm

Posted in プログラミング

Tagged with ,