MySQLのサーバーのファイル容量がいっぱいになる件

今のところ、MySQLサーバーが機能しなくなる原因には主に2つある。
1、テーブルの容量制限いっぱにデータが入っているため、それ以上PUTできない。
2、単純にHDDがいっぱい。

1に関してはログ用のテーブルなので、truncateで片付けてる。
2にはその都度、いらないファイルとかを削除して間に合わせてきたけど、あきらかにMySQLの仕業ということが分かり、調べてみた。

http://wiki.bit-hive.com/tomizoo/pg/MySQL%20%A5%D0%A5%A4%A5%CA%A5%EA%A5%ED%A5%B0%A4%CE%BA%EF%BD%FC

バイナリログというのが溜まってこうなるらしい。
単体で使用するならただのログだが、slaveなどを使っている場合はslaveサーバーがそれを見て情報更新をするため、必要なログらしい。

バリデーションでエラーが出たとき、入力欄が改行されないようにする方法

http://d.hatena.ne.jp/shunsuk/20080517/1211024214

まだ試していませんが。。。
苗字と名前、郵便番号など、常に横に並んでいて欲しい項目がある場合にいい。

今回、id:shunsukさんのタイトルをそのままお借りしたんですが、なんとも整理されたタイトルですね。勉強になります。

毎日Mongrelが止まる

ここのところで最大の難問。具体的な解決すらしていない。
朝、出社してrailsアプリにアクセスしてみると、何にも反応がない。
SSHにもアクセスできるし、メモリも大して使っていないので、フリーズではない。

で、やっと記事を見つけた。
http://rryu.sakura.ne.jp/nisenise-fuhito/2008/04/
http://d.hatena.ne.jp/koseki2/20070130/railslockup
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43356

で、何が一番簡単かってlinuxのcronジョブでrailsアプリにリクエストを送って、MySQLに10時間以内に必ずアクセスさせる方法。
んなアホな。。。

DateTimeによる日本時間取得

Rails2.1でenviromentファイルにタイムゾーン指定が出来るようになったと聞き、ウハウハしていたのですが、
なんとTime関数にしかきかないじゃないですか。もうコードはすっかりDateTime関数で書いちゃってますよ。
だって日付ベースで計算できるんだもん。いちいち秒数で計算したくないっすよ。
これじゃ海外サーバーでちゃんと動かない。

で、どうすりゃ無理やり日本時間に出来るか。

time = DateTime.now
utc = time.new_offset(0)
j_time = utc + Rational(3,8)

時間取得→UTC(時差0)に→24時間の3/8(9時間)をプラス
スマートじゃない。。。

追記

なんと。Timeでも簡単な日付計算出来た。

time = Time.now
time.yesterday
time.tomorror

とかできる。なぜRubyレシピブックに載ってないでRailsレシピブックに載ってんだコレ!?

レンタルサーバーでrails*

日本でrailsをやろうとすると自分でサーバーを建てるか、月1万円とかでサーバーを借りないといけないので、
海外のサーバーを使おう。と、思い、bluehostを借りてみた。
大容量でruby on rails も PHP5もSSHもつかえる。すごい。

しかし。しかしだ。rails 2.1が全く動かない。問い合わせをしても全然返事が返ってこない。
結局サーバーで不具合が起きていて、もうすぐ直るんだそうだ。2週間くらい待ったよ。
その間、嫌気がさして別のサーバーを借りる事にした。
hostingrails
ここは対応も早いし、rails向けの環境がしっかり整ってる。サーバータイプまで選べるというありがたい環境。
bluehostはapache+FastCGIだけなので、開発環境がmongrelだと不安も多い。
ちょっと割高だけど。

hostingrailsで面倒なのが、アプリケーションとドメインを関連付けるvisualhostの設定をメールでお願いしないといけない。
英語が出来ないとかなりハードルが高い。

Mongrelの自動起動

今までずっとVNCLinuxサーバーにつなげてシェルからscript/serverしてたんだけど、リブートしたら手動でまたやらなきゃならないので、起動時にMongrelが自動で起動するようにした。

Mongrelの起動・停止コマンド

参考
http://mongrel.rubyforge.org/
これでshellでモニターすることなく、サーバーをバックグラウンドで立ち上げておく事が出来る。

webminで自動起動設定

System下
Bootup and Shutdownで新しくアクションを作成、
Bootup commandsに
cd /rails/my_app
mongrel_rails start -d -p 3000
Shutdown commandsに
cd /rails/my_app
mongrel_rails stop
で保存して再起動してみたら出来た。

しっかし、記事の書き方がいまいち分からない。。。