「maimuzoが個人的にオススメするプラグイン」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
今のところのベストプラクティス
**前提
-定型手順はこの流れで細かいところを調整ぐらいで使えるように
-開発マシンと本番マシンは別の想定。
-開発マシンではdevelopment環境、本番マシンではproduction環境を使用。
-開発マシンから本番マシンへのデプロイはcapistranoを使う。
-ソースコード管理はsubversionを使う。リポジトリはsubversionサーバ用のマシンに置く想定。
-開発マシンではscript/serverで動かす。本番マシンではフロントをApache+mod_ploxy_balancerで、バックをmongrel_cluster構成とする。
**リポジトリを用意する
subversionのサーバにログインして
>$ svnadmin create --fs-type fsfs /svn/hogeproject
んで、/svn/hogeproject/confの中のsvnserve.confとかpasswdあたりをいじっておく。
**railsアプリを作ってsubversionに入れておく
まずはsubversion用のディレクトリにアプリを生成し、コミットする。
>$ mkdir hogeproject
>$ cd hogeproject
>$ mkdir trunk tags branches
>$ cd trunk
>$ rails hogeapp
>$ cd ..
>$ svn import . svn://domain/svn/hogeproject/ -m "initial" --username user
登録できたら、元ディレクトリをどけて(バックアップとして)、チェックアウトする。
>$ mv mv hogeproject hogeproject_backup
>$ svn checkout svn://domain/svn/hogeproject/trunk/ .
logとtmpのいらないファイルを無視する
>$ cd hogeapp
>$ svn remove ./log/*
>$ svn commit -m "remove log file"
>$ svn propset svn:ignore "*.log" log/
>$ svn update log/
>$ svn commit -m "add ignore log/*"
>$ svn remove tmp/*
>$ svn propset svn:ignore "*" tmp/sessions tmp/cache tmp/sockets
>$ svn update tmp/
>$ svn commit -m "add ignore tmp/"
**先に入れておくべきgem
>$ gem install mysql gettext refe mongrel mongrel_cluster capistrano -y
**なにはなくとも
./config/environment.rbに
>$KCODE = 'u'
>require 'jcode'
>require 'gettext/rails'
を追加
./config/database.ymlのdeveropmentとtestとproductionに
>encoding: UTF8
と各種設定情報を追加
>$ capify
して./config/deploy.rbを埋めておく。
[[Capistrano]]参照。
>$ mongrel_rails cluster::configure
して./config/mongrel_cluster.rbに本番環境用の設定を埋めておく。
ちなみにフロントエンドのapache 2.2系でmod_ploxy_balancerを使った構成は
>NameVirtualHost 192.168.1.3:80
>
><VirtualHost 192.168.1.3:80>
>DocumentRoot "/sites/yourdomain.com/current/public"
>ServerName yourdomain.com
>CustomLog /var/log/apache2/yourdomain.com.proxy_access.log combined
>ErrorLog /var/log/apache2/yourdomain.com.error.log
><Directory "/sites/yourdomain.com/current/public">
>allow from all
>Options +Indexes FollowSymLinks
>AllowOverride all
>Allow from all
>Order allow,deny
></Directory>
>DirectoryIndex index.html
>
># forward proxy off
>ProxyRequests Off
>
># don't use reverse-proxy for /engine_files /images /javascripts /stylesheets
>ProxyPass /engine_files !
>ProxyPass /images !
>ProxyPass /javascripts !
>ProxyPass /stylesheets !
>
># other access are proxying mongrel server
>ProxyPass / balancer://yourcluster/ timeout=2 nofailover=On
>ProxyPassReverse / http://localhost:4000/
>ProxyPassReverse / http://localhost:4001/
></VirtualHost>
>
>#reverse proxy cluster member
><Proxy balancer://yourcluster>
>BalancerMember http://localhost:4000 loadfactor=10
>BalancerMember http://localhost:4001 loadfactor=10
></Proxy>
>
><Location /balancer-manager>
>SetHandler balancer-manager
>Order Deny,Allow
>Deny from all
>Allow from 192.168.1.2
></Location>
>
><Location /server-status>
>SetHandler server-status
>Order Deny,Allow
>Deny from all
>Allow from 192.168.1.2
></Location>
>
>ExtendedStatus On
こんな感じ。
192.168.1.3が本番マシンのIPで、
192.168.1.2は本番マシンをリモートメンテするためのマシンのIPを想定。
詳しくはapacheのマニュアル読むべし。
**使い分け
ログイン処理
[[Acts as Authenticatedプラグイン]]が標準か?
でも、いたずら防止目的としてOpenIDを採用するメリットはあって、現実的にはYahooのOpenIDを使う事になるんだろうけど、その場合はOpenID 2.0に対応しなきゃならなくて、OpenIDの本家推奨は[[JanRain Ruby>>http://openidenabled.com/ruby-openid/]]なんだけど、これが便利なんだか便利じゃないんだかさっぱりわからないので、もうちょっと様子見かな。
あと、REST対応版とか?
ファイルアップロード処理
[[Attachment_fu]]プラグインが使えるなら使った方が楽かもね。
今のところのベストプラクティス
**前提
-定型手順はこの流れで細かいところを調整ぐらいで使えるように
-開発マシンと本番マシンは別の想定。
-開発マシンではdevelopment環境、本番マシンではproduction環境を使用。
-開発マシンから本番マシンへのデプロイはcapistranoを使う。
-ソースコード管理はsubversionを使う。リポジトリはsubversionサーバ用のマシンに置く想定。
-開発マシンではscript/serverで動かす。本番マシンではフロントをApache+mod_ploxy_balancerで、バックをmongrel_cluster構成とする。
**リポジトリを用意する
subversionのサーバにログインして
>$ svnadmin create --fs-type fsfs /svn/hogeproject
んで、/svn/hogeproject/confの中のsvnserve.confとかpasswdあたりをいじっておく。
**railsアプリを作ってsubversionに入れておく
まずはsubversion用のディレクトリにアプリを生成し、コミットする。
>$ mkdir hogeproject
>$ cd hogeproject
>$ mkdir trunk tags branches
>$ cd trunk
>$ rails hogeapp
>$ cd ..
>$ svn import . svn://domain/svn/hogeproject/ -m "initial" --username user
登録できたら、元ディレクトリをどけて(バックアップとして)、チェックアウトする。
>$ mv mv hogeproject hogeproject_backup
>$ svn checkout svn://domain/svn/hogeproject/trunk/ .
logとtmpのいらないファイルを無視する
>$ cd hogeapp
>$ svn remove ./log/*
>$ svn commit -m "remove log file"
>$ svn propset svn:ignore "*.log" log/
>$ svn update log/
>$ svn commit -m "add ignore log/*"
>$ svn remove tmp/*
>$ svn propset svn:ignore "*" tmp/sessions tmp/cache tmp/sockets
>$ svn update tmp/
>$ svn commit -m "add ignore tmp/"
**先に入れておくべきgem
>$ gem install mysql gettext refe mongrel mongrel_cluster capistrano -y
**なにはなくとも
./config/environment.rbに
>$KCODE = 'u'
>require 'jcode'
>require 'gettext/rails'
を追加
./config/database.ymlのdeveropmentとtestとproductionに
>encoding: UTF8
と各種設定情報を追加
>$ capify
して./config/deploy.rbを埋めておく。
[[Capistrano]]参照。
>$ mongrel_rails cluster::configure
して./config/mongrel_cluster.rbに本番環境用の設定を埋めておく。
ちなみにフロントエンドのapache 2.2系でmod_ploxy_balancerを使った構成は
>NameVirtualHost 192.168.1.3:80
>
><VirtualHost 192.168.1.3:80>
>DocumentRoot "/sites/yourdomain.com/current/public"
>ServerName yourdomain.com
>CustomLog /var/log/apache2/yourdomain.com.proxy_access.log combined
>ErrorLog /var/log/apache2/yourdomain.com.error.log
><Directory "/sites/yourdomain.com/current/public">
>allow from all
>Options +Indexes FollowSymLinks
>AllowOverride all
>Allow from all
>Order allow,deny
></Directory>
>DirectoryIndex index.html
>
># forward proxy off
>ProxyRequests Off
>
># don't use reverse-proxy for /engine_files /images /javascripts /stylesheets
>ProxyPass /engine_files !
>ProxyPass /images !
>ProxyPass /javascripts !
>ProxyPass /stylesheets !
>
># other access are proxying mongrel server
>ProxyPass / balancer://yourcluster/ timeout=2 nofailover=On
>ProxyPassReverse / http://localhost:4000/
>ProxyPassReverse / http://localhost:4001/
></VirtualHost>
>
>#reverse proxy cluster member
><Proxy balancer://yourcluster>
>BalancerMember http://localhost:4000 loadfactor=10
>BalancerMember http://localhost:4001 loadfactor=10
></Proxy>
>
><Location /balancer-manager>
>SetHandler balancer-manager
>Order Deny,Allow
>Deny from all
>Allow from 192.168.1.2
></Location>
>
><Location /server-status>
>SetHandler server-status
>Order Deny,Allow
>Deny from all
>Allow from 192.168.1.2
></Location>
>
>ExtendedStatus On
こんな感じ。
192.168.1.3が本番マシンのIPで、
192.168.1.2は本番マシンをリモートメンテするためのマシンのIPを想定。
詳しくはapacheのマニュアル読むべし。
**使い分け
ログイン処理
[[Acts as Authenticatedプラグイン]]が標準か?
でも、いたずら防止目的としてOpenIDを採用するメリットはあって、現実的にはYahooのOpenIDを使う事になるんだろうけど、その場合はOpenID 2.0に対応しなきゃならなくて、OpenIDの本家推奨は[[JanRain Ruby>>http://openidenabled.com/ruby-openid/]]なんだけど、これが便利なんだか便利じゃないんだかさっぱりわからないので、もうちょっと様子見かな。
あと、REST対応版とか?
ファイルアップロード処理
[[Attachment_fu]]プラグインが使えるなら使った方が楽かもね。
レーティング系
acts_as_ratableプラグインが良さそう
タギング系
acts_as_taggable_on_steroidsが良さそう
ちょっと便利だから入れと系
annotate_modelsプラグイン
Exception Notifierプラグイン