テーマやプラグインが開発したくなったので運用環境で作業せずに開発環境を構築してみたメモ。
rbenv版はhttp://qiita.com/items/909ea8134e5199c3457a
前提
ポリシー的にはなるべく簡単に、そして環境を限定的に。とりあえずUbuntu 12.04でやってるけど*nix系ならほぼ使いまわせそう。
- Redmine 2.x向け
- GitでRedmine本体を管理する
- Redmine本体の開発については対象外
- 自分のテーマやプラグインは個別のGitリポジトリで管理(submoduleとかは使わない)
- RVMを使い、Redmine用のgemsetを作る
- データベースはSQLiteを使う
Redmineの実行環境を作る
Rubyのインストール
RedmineのRubyのバージョンを確認する。
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
https://rvm.io/ からRVMをイントールしておく。
Redmineの配置とGemsetの準備
git clone https://github.com/redmine/redmine redmine-dev
cd redmine-dev
git checkout -b develop/2.2.1 2.2.1
rvm --rvmrc --create 1.9.3@redmine
Redmineをgitで落として、バージョンのタグからdevelop/{version}という名前のローカルブランチを作って使う。
でRuby 1.9.3でRedmine用のgemsetである1.9.3@redmineをrvmrcを使ってこのディレクトリでそれを使うようにしている。rvmrcはここを参考。https://rvm.io/workflow/rvmrc/
redmine-devに移動したときに自動的に1.9.3@redmineに切り替えるには/etc/rvmrc または ~/.rvmrcにrvm_project_rvmrc=1を設定しておくといい。
Redmineのセットアップ
Redmine 2.3.1にあげたらGemfileが改良されておりdatabase.ymlのadapterを見て適切なデータベースドライバをインストールするようになり、--without mysqlなどのグループによる除外が機能しなくなる
cp -p config/database.yml.example config/database.yml
でデータベースの構成ファイルを作成して以下のように修正。
production:
adapter: sqlite3
database: db/production.sqlite3
development:
adapter: sqlite3
database: db/development.sqlite3
test:
adapter: sqlite3
database: db/development.sqlite3
bundlerで依存モジュールを解決する。
rbenv local 1.9.3-p327
bundle install --without development test rmagick mysql postgresql --path vendor/bundle
粛々とセットアップ。
rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
mkdir tmp tmp/pdf public/plugin_assets
Redmineの実行
ruby script/rails server webrick -e production
で実行して、 http://localhost:3000/ にアクセス。admin/adminでログインできる。
あとはテーマやプラグインを好き勝手に開発。基本的にRedmine本体の開発はしないのでredmine-dev/.gitはRedmineのバージョンアップ時にブランチを切り替えるだけで特にコミットはせず、自分のテーマやプラグインについてはnew fileで差分が出たままの状態にしておく。
Redmineバージョンアップ時の作業
リポジトリの最新を取得して、新しいバージョンのタグからローカルブランチを切り替えてデータのマイグレーションとかを行う。
ブランチの切り替え
git checkout master
git pull; git pull --tags
git checkout -b develop/x.x.x x.x.x
データの再セットアップ。
bundle install --without development test rmagick mysql postgresql
rake db:migrate RAILS_ENV="production"
rake redmine:plugins:migrate RAILS_ENV=production
rake tmp:cache:clear
rake tmp:sessions:clear