Happy Man

mash-uppy

mod_railsを入れてみた

ジュンヤさんのmod_rails Enterprise Edition に切り替えましたと、
yukiのPassenger入れてみた
を読んで。
思いたったので
mod_railsをいれました。
確かに簡単。
インストール自体は、適当にgooglingしてください。
本家のマニュアル
Passenger users guide
設定したこと
開発ユーザxxxxでログインした後
ホームディレクトリ /home/xxxx
rails用ディレクトリ /home/xxxx/rails
cd /home/xxxx/rails
アプリ名をtestとして
rails test
zzzコントローラを作りました。
./script/generate controller zzz
設定内容
#vi /home/xxxx/rails/test/public/.htaccess
以下の1行を追加
RewriteBase /test
以下suで作業しました。出来たファイルです。
#cat /etc/apache2/conf.d/passenger.conf
Alias /test “/home/xxxx/rails/test/public”
<directory “/home/xxxx/rails/test/public”>
AllowOverride all
Order allow,deny
Allow from all
</Directory>
#cat /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-1.0.5/ext/apache2/mod_passenger.so
#cat /etc/apache2/mods-available/passenger.conf
RailsSpawnServer /var/lib/gems/1.8/gems/passenger-1.0.5/bin/passenger-spawn-server
RailsRuby /usr/bin/ruby1.8
で、以下を実行
#a2enmod passenger
#/etc/init.d/apache2 restart
http://x.x.x.x/test/zzz
でアクセスできるようになります。
#a2enmodってコマンドはじめてみました。apache2真面目に勉強しないと。。。
設定方法、ここは違うとか変とか教えてください。w

簡単キャッシング

お金のことではないですよ。もちろん、railsネタです。
ActionControllerのcaches_pageという機能を使います。
やることは3つです。
1.config/environments/production.rb(開発中ならdevelopment.rb)の
設定を確認して以下のようにtrueにします。
config.action_controller.perform_caching=true
デフォルトな設定の場合
作成されるキャッシュファイルの拡張子はhtml
保存場所は、public以下にroutes.rbに従って、
コントローラ名/アクション名フォルダのように作成されます。
また、デフォルトではなく変更したい人向けのオプションもあります。
拡張子と保存ディレクトリを適宜変更できます。
config.action_controller.page_cache_extension=’.html’
config.action_controller.page_cache_directory=’/public/caches’
2.コントローラに、キャッシュしたいメソッド名というかアクション名を以下のように追加します。
caches_page :キャッシュしたいメソッド名1,:キャッシュしたいメソッド名2…
準備は、たったこれだけです。
2で設定されたアクションのページにアクセスしてみてください。
指定フォルダにキャッシュファイルが作成されています。楽チンですよ。
一生ずっと内容が変わらないコンテンツであれば
これでよいのですが、普通はそうはいきません。
必ずページは更新されるはずです。
3.キャッシュファイルの更新
作成されたキャッシュファイルを消した後、
もう一度ページにアクセスすればキャッシュは更新されます。
消す方法はいくつか考えられると思いますが、
railsの機能としてはexpire_pageがあります。
たとえば、以下のようなイメージです。
showでキャッシュ作成、updateでキャッシュ削除
PhotosController
caches_page :show
def show
photo=Photo.find(:first, :conditions=>[’id=?’,id])
end
def update
Photo.update(id,{:column1=>’aaa’,:culumn2=>’b’})
expire_page :action=>’show’,:id=>id
end
ちなみに
OFINDERの場合、
GMAIL受信時(cronです)に写真が追加されたページのファイルを
消してあげるようにしました。
cache_file=”キャッシュフォルダ/#{id}.html”
FileUtils.rm(cache_file,{:force=>true})
あと、IMPORTでの検索結果はキャッシュしていません。

railsのステキなところ

で、さっそくなんですが、
わたしが思う、railsのステキなところです。
CoC(設定よりも規約)な思想
XMLやDBに設定を保存するよりも
規約に従ったディレクトリ構成やクラスやメソッドにより
システムを組み立てていく。
例えば、
あるオープンなフレームワークの設定ファイルに関するドキュメントはあるけど、
今、まさに開発しているそのシステムにおける
設定ファイルに関するドキュメントは大体の場合無い。。。。
そこでCoCな思想の場合、そのドキュメントが無くても
ある程度はカバーできる、と思う。
DBまわりの管理
言わずもがな、ActiveRecordですが、
特に、Migrationの履歴というか
db/migrate以下のファイル達がよいです。
テーブルスキマに関する設定ファイルのバージョン管理より
001、002、と変更の履歴を一目で見渡せるのがよい、と思う。
————
他にもあるけどね。
ちなみに
嫌いなところもありますよ。当然。
でも、それは、書かない。
そんなことは、どうでもよいので。笑

railsプラグイン=>widgetsについて

前回投稿時にふれたrailsプラグインの
widgetsなんですが
早速お試しで使ってみようと思って、
チェックアウトしてみたんですが
grepしてもnubbinらしき字面がないんで
どうしたものかなと、ググッてみたところ
こんなキャッシュが引っかかりました。。。
日付は、11末ですね。
スライド中にだけ紹介されていた
column layoutとnubbinについては
まだ、コミットされていないようです。残念。
と、まぁ、あきらめ気味に
widgets開発者のpaolo.donaさんのページを
眺めていたら、友人を訪ねて去年来日されていた模様。
ちょっとビックリです。

rails再チャレンジ(その4)

わたしのrails師匠、ジュンヤさんが
連載中の
つくるぶガイドブログ: ドラッグアンドドロップで並べ替え(Rails + Ajax)
がおととい追加されていました。
追いつけないなりに
記事中に出てくるキーワードだけでも
おさえておこう思っています。
そんな連載読み中、いつも気になっていたことがあります。
それは
ジュンヤさん、acts_as_hogeやpluginってどうやって探してるの?
です。
ま、ググレと言われればそれまでですが。。。。
今回、ようやくpluginについて調べたわけですよ。
まずは、Ruby on Rails Wikiあたりから
右中あたりのResources->Pluginsです。
ページの中段あたりでカテゴリ別にリンクが分けてあります。
UIまわりは他力本願な自分なのでView Extensionsを見てみます。
面白そうなものが、いろいろありますね。
そんな中、これは必須だなってのを見つけましたので紹介。
#そんな身分ではないですがw
Widgets
です。
開発はSeeSaw | Rails Widgets。From Itaryですね。
このページでは

Tabnav
Navigation
Tooltips
Tableizer
ShowHide

について書かれていますが、
スライドの中では、さらに

Column Layouts
Nubbins

が紹介されています。
Nubbinsって言うんですね。
リストで一覧表示みたいな時は、是非使ってみたい機能ですよ。
こんなに便利機能を簡単に使わせてくれるなんて最高す。
まだ、試していないのであれですが、
スライドに出てくる

easy quick no monkey business

かどうか使ってみたいと思います。
#Agile Web Developmentも、押さえておかなければ。。

eclipseのインストール

ディスクの整理をやって、
ようやくeclipseインストールしてみようと思います。
eclipseと言っても、なんかいろいろあるようですが、
面倒なので
EasyEclipseのRuby and Rails用windows版を
インストールしてみます。
#LAMPセットと悩ましいところですが。。。
ダウンロード後、ダブルクリックでインストール終了です。
ウィンドウズなので左下のスタートメニューから
起動してみます。予想通り、メニューなど日本語ではありません。
一旦、eclipseは終了します。
今入れたEasyEclipseは、3.2系のようなので
Language Packs: 3.2.1にあるNLpack1-eclipse-SDK-3.2.1-win32.zipを
ダウンロードし、先ほどインストールした
EasyEclipse for Ruby and Rails 1.2.2.2フォルダに
上書き(pluginsとfeaturesフォルダ)します。
#真面目にNLpack入れたい人は、
#eclipseの[メニュー]→[ヘルプ]→[ソフトウェア更新]
#あたりからやるようですが。
で、eclipse再起動です。
プラグインなんか入れた後の起動の基本は、
コマンドプロンプトを起動
cd インストールディレクトリ
eclipse -clean
です。
はい、ようやく日本語メニューが出てきました。
名前どおりEasyですね。
#普通にJDTも入っていてjavaもつかえるようです。ありがたい。
EasyEclipse for Ruby and Rails 1.2.2.2フォルダに
既にjreフォルダがありjre1.4のインストールすら不要のようです。
#普通のeclipseの実行にはjre1.4のインストールが必要だったはずです。
ホントに至れり尽せりでEasyです。

rails再チャレンジ(その3)

#昨日は引越しの手伝いのため体中痛いです。
ジュンヤさん連載のつくるぶガイド:Rubyを
追っかけているのですが、ついていけてないです。OTL。。
svn見ながら追っかけつづけます。。。
ただ、
自分に根本的に足りていないものが見えてきたような気がします。
1.そもそもなのですが、rubyをちょっとは勉強しましょう。
2.Rails Framework Documentationって言う、rails APIがあるので、ちょっとは勉強しましょう。
以下、備忘録
Ruby Programming
Ruby on Rails
いろんなサイトにあるチュートリアル的なページをこなすだけでなく、
早くなにか作りたいな。

rails再チャレンジ(その2)

昨日に引き続き、railsです。
ひとりサービスの雛型をつくる(リキッドレイアウト、GetText、Acts as Authenticated)
まで終了。
っと思ったら、
Rails で楽々ソーシャルブックマークの仕組みを作るが今日、追加されていました。
がんばろう。

rails再チャレンジ

先週の忘年会で絶賛だったrails、
自分、一度はくじけたものの、再チャレンジしてみることにしました(w
#scaffold止まりでした。。。
その忘年会で同席させていただいた僕は発展途上技術者のジュンヤさんが解説されているつくるぶガイドブログ: Ruby on Rails を使ってひとりでサービスを作ってみよう
を、とりあえず、ローカルのwindows環境で追っかけてみようと思います。うーん、ワクワクしますね。
何か良いネタが浮かばないかなぁ。。。
ちなみに、サーバにはrailsセットアップ済みです。
Ruby on Rails を入れる(さくらインターネット)を参考にしました。