投稿者 okkez
2008-06-05 15:36:00 GMT
色々と調べたり試したりした結果、以下の方法で妥協することにした。
RAILS_ROOT/spec/spec_helper.rb をコピーして RAILS_ROOT/spec/rollback_spec_helper.rb を作成して、 use_transactional_fixtures = false にする。
これで、ファイルごとに実行するテストはうまくいくようになる。
この方法は簡単なんだけど、 rake spec や rake spec:rcov でテストを実行すると rollback 関連のテストが必ず失敗する。
もっとうまい方法はないのだろうか。
カテゴリ Programming, Ruby | タグ Rails, RSpec | 2 comments | トラックバックなし
投稿者 okkez
2008-04-15 13:58:00 GMT
Overview — Phusion Passenger (a.k.a. mod_rails)
思ったより簡単だったのでちょっとだけ手順を書いておく。
- Apache は 2.2 系
- Rails2.0.2
- Redmine0.7.0RC1
上記はインストールできている and 動作確認できている前提で。
まずは、Passenger をインストール。
sudo gem install passenger
で以下のコマンドを実行。
passenger-install-apache2-module
そうすると対話型っぽい感じになって色々と親切に教えてくれる。足りないライブラリとそれらの入手方法とか。
個人的にはもう少し不親切でもいいような気がした。
このコマンドではApacheのモジュールをビルドするので Windows ではかなり苦労するであろう事が予想される。(調べてないけど)
最後に、httpd.conf に書く設定内容が表示されるのでそれをコピペして Apache を再起動すればOK。
各アプリの設定は後で書く。
もう一つのインストール方法でやる場合は、ソースを展開したディレクトリの下にビルドしてインストールされてしまうので、ちょっと気持ち悪い。手でコピーすればいいけどコマンドが動的に生成されるっぽいのでその辺の調整が必要。
### Redmine を使う
- /var/webapps/redmine に置いている
- /var/www/html が Apache の DocumentRoot
サブドメインが使える場合は以下でOK。
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /var/webapps/redmine/public
</VirtualHost>
サブドメインが使えない場合(素朴なイントラネットなど)。
ln -s /var/webapps/redmine/public /var/www/html/redmine
のようにシンボリックリンクを DocumentRoot 以下に用意する。
で、以下の内容を httpd.conf を追加する。
DocumentRoot /var/www/html
RailsBaseURI /redmine
サブドメインが使える場合は NameBase の VirtualHost でいくらでもアプリケーションを置くことができるが、そうでない場合は以下のようにすればいけるかもしれない。(まだ試してない)
RailsBaseURI /redmine1
RailsBaseURI /redmine2
考えてみたけど VirtualHost を使用せずに一つのアプリに別々のRailsEnv を設置する方法がわからない。
上のやり方だと、一つの環境しか設定できないような気がするし。
以上の設定内容は全部、 Passenger のサイトに書いてあった。最初からドキュメントが揃っているのは素晴らしい!
カテゴリ Ruby | タグ Rails, Ruby | コメントなし | トラックバックなし
投稿者 okkez
2008-03-29 13:47:00 GMT
Ruby で作られたデプロイツール Capistrano を使ってみたので使い方をまとめておく。
インストール
gem でインストールする。
$ sudo gem install capistrano
依存ライブラリも入るはず。
最初の一歩
こでは2.2.0を使用する。
$ cap --version
Capistrano v2.2.0
$ cd ~/railsapp/
$ capify .
Rails アプリを作成しているディレクトリに移動して capify コマンドを実行するだけで
その Rails アプリは Capistrano 対応になる。
capify コマンドでは以下のファイルが生成される。
* Capfile
* レシピファイル
* config/deploy.rb
* 設定ファイル
あとは config/deploy.rb を編集するだけで良い。
config/deploy.rb の編集
set :application, "application name"
set :repository, "/path/to/repository"
set :deploy_to, "/path/to/deploy/path"
role :app, "application server"
role :web, "web server"
role :db, "databese server", :primary => true
set :hoge のところは特に説明は不要だと思う。しかし、set :repository の設定でちょっとハマったので後述する。
role の方は、各サーバーの名前や IPアドレスを記述する。ドキュメントによると複数のサーバを指定することも可能なようだ。
ウチでは全部同じサーバなのでそういう風に設定した。
これでデプロイ先にディレクトリが作成される。
これで足りないものが無いかチェックしてくれる。
初回のデプロイは上記コマンドを実行する。二回目以降は以下を実行する。
簡単ですね!
ハマりポイント
ウチのサーバの構成。
[作業マシン] <- [The Internet] -> [サーバ](app, web, db, svn)
# 間の通信は svn or http
ご存知のとおり、Subversion は svn, svn+ssh, file, http, https などのプロトコルに対応している。
自分の場合は、 svn+ssh でアクセスするようにしていたので最初はそのように設定した。
その場合、以下のように実行されるようでうまく行かなかった。
- ローカルでリポジトリの情報を取得
- app サーバに ssh で乗り込む[a]
- appサーバから svn+ssh でリポジトリからデータを取得[b]
3番の部分で ssh のコネクションが突然閉じてしまう。ログを確認してもよく分からなかったのであまり調査せずに
サーバに乗り込んでから cap コマンドを実行するようにした。
リポジトリの設定だけ file:// を使用するように変更した。
今のところうまく動いているので、もう少し時間のある時にしっかり調べてみようと思う。
カテゴリ Ruby | タグ Rails | コメントなし | トラックバックなし