parabola を deploy するマデの道のり
なんか DRY に反してる感満載なんですが、慣れてないとゆー事でご勘弁を。
適当な所に parabola を co
こんな感じ
$ svn co svn://lotus.aeonblue.dk/parabola/tags/release-0.4
リポジトリの準備
リモートリポジトリなホストに接続して以下。
# svnadmin create parabola # svn mkdir file:///home/xx/svn/parabola/trunk -m 'mkdir trunk' # svn mkdir file:///home/xx/svn/parabola/branches -m 'mkdir branches' # svn mkdir file:///home/xx/svn/parabola/tags -m 'mkdir tags'
ローカルリポジトリの構築
まず、parabola をチェックアウトしたホストから import を実施。
$ ls parabola $ svn import parabola svn+ssh://xx@svnrep.com/home/xx/svn/parabola/trunk -m 'import prj'
で、ローカルにリポジトリをコピィ
# svk mirror svn+ssh://xx@svnrep.com/home/xx/svn/parabola/trunk //mirror/parabola # svk sync //mirror/parabola # svk cp -p //mirror/parabola //parabola
AP サーバに co
AP サーバ側にて co してみる
# svn co svn+ssh://guest@local/home/guest/.svk/local/parabola parabola # ls parabola typo.release-4.0.0 # cp typo.release-4.0.0/vendor/rails parabola/vendor/. -r # for i in `find parabola/vendor/rails -name '.svn'` ; do rm -rf $i; done # cd parabola; svn add vendor/rails # svn ci -m 'install rails1.1' #
AP サーバでは rails 1.0 が動いてるんでこんな微妙なコトしてます。堪忍して下さい。
AP サーバに feedtools 入れとく
以下。
# gem install feedtools --include-dependencies
rails なナニを ci
- log 配下を無視
$ svn remove log/* $ svn ci -m 'rm logfile' $ svn up $ svn propset svn:ignore '*.log' log/ $ svn ci -m 'add ignore ./log/*.log'
- database.yml も無視
svn up svn move config/database.yml config/database.example.yml svn ci -m 'move database.yml' svn up svn propset svn:ignore 'database.yml' config/ svn ci -m 'add ignore'
ローカルで稼動準備 (注:DRY に反しています。駄目スギです)
う。カレンダ側で migrate 追加してるぞ。ci しとかんと (独り言
# AP サーバに展開する時に svn up して rake migrate が必要。
# てーか、本番環境作る時がまたホネだなっぽい (鬱
で、ローカル環境にはテーブルあるから、先の修正を盛り込み。試験は別途 (こら
$ script/plugin install engines $ script/plugin install login_engine
で、config/environment.rb の末端に以下を追加 (適当スギんか??
module LoginEngine config :salt, "my-salt" config :email_from, "webmaster@localhost" config :admin_email, "root@localhost" config :app_name, "webcalendar" end Engines.start :login
次は app/controllers/application.rb ですが、修正点は以下。
- login_engine の require
- require_dependency "login_system" をコメントアウト
- include LoginEngine 追加
- helper :user 追加
- include LoginSystem コメントアウト
- authorize メソドをコメントアウト
require 'login_engine' #require_dependency "login_system" require_dependency "misc" # Filters added to this controller will be run for all controllers in the application. # Likewise, all the methods added will be available for all controllers. class ApplicationController < ActionController::Base include LoginEngine helper :user # include LoginSystem model :user before_filter :reload_settings # def authorize # unless session[:user] # flash[:notice] = "Please log in" # redirect_to(:controller => "/account", :action => "login") # end # end (以下略)
今度は app/helpers/application_helper.rb ですが、include を追加です。
module ApplicationHelper include LoginEngine def config_value(name) (以下略)
ActionMailer はカレンダも config/environments/development.rb にしか設定が無い。忘れるなよ < 自分
ActionMailer::Base.server_settings = { :address => "localhost", :domain => "localhost", :port => 25 }
localhost で exim が動いてる、ってコトで ...
で、後は app/models/user.rb と lib/login_system.rb を削除、と。
その後、before_filter :authorize してるナニを修正。app/controllers で修正かかってるのは以下の模様。(やりながら記録してるんで微妙
- app/controllers/account_controller.rb (before_filter をコメントアウト)
- app/controllers/admin/feeds_controller.rb (before_filter をコメントアウト)
あと、生 SQL が tags_feeds になってるのが以下のファイル。
- app/models/feed.rb
- app/models/tag.rb
動作確認
一応 OK な模様。これで DRY な作業完了ッスね。(意味不明
ローカルなリポジトリ方面へ ci
rm したり add したり。tmp 配下はスルーで ci。ようやく AP サーバに deploy できる体制になった、と信じたい。
AP サーバ方面へ co して稼動試験
- config/database.yml はカレンダなナニをそのまま使う。
- /etc/apache2/sites-aveilable なナニもカレンダのソレを流用。
で、起動したら動かん。public/.htaccess 変更してないな。DB か??と思ったら AP サーバ側で rake migrate してるし。DB 見てもテーブルはあるぞ。何故だ。
どーでもええが、ログが長すぎ。しかし端末側では動いてるだけどなぁ。こーゆー時って
よくよくログを見てみると、tmp 配下 (/tmp ではない) のアクセス権限がアレ、という記述を発見。てっきり /tmp だと思っていたら違うんか (ため息
chmod 777 tmp/* したら動きました。このあたりの微妙な挙動の違いは吸収しないと駄目だなぁ。まだまだ勉強が足らん。
cron なナニ
無理矢理手で以下を追加
0,5,10,15,20,24,30,35,40,45,50,55 * * * * \ root /var/www/parabola/script/runner -e production \ 'Feed.update_all_feeds(:force => true)'
(微妙に改行してます。)
cron ニガテ。
この時点でアルファリリース。
追記
今日は情報多いな。最後にリポジトリの同期を取っています。
# svk push --verbatim //parabola
もの凄ぇたくさんパスワード要求された。ローカルブランチに ci しまくるのもあまり良くないのかなぁ。