Community Engine on Rails3 を使ってみようとする

Rails 3.1 も正式版がリリースされたので、改めて環境作りをしてみた。

Community Engine の Rails3 版は執筆時開発中なので、アップデートによって以下の内容では対応できない場合があります。

また、逐次書き換えたりしていて、手順通りには上手く行かないことがありますのでご了承ください。

今日の SNS にありがちなコンポーネントを備え、プラグインもたくさんありそう。

なければ作ればいいじゃない、ということで使ってみようとした。その道のりは遠そうだけど…。

セットアップ

せっかくなので Rails3 ブランチを用います。記事執筆現在、正式版ではないですが、安定版のリリースに期待しましょう。

rvm で新しく gemset を作って rails と bundler をインストールしておきます。

ruby 1.9.2、rails 3.1.3 でセットアップします。

mkdir ce && cd ce
rvm gemset create ce
echo "rvm use 1.9.2-head@ce" > .rvmrc && cd ./
gem install bundler

新しくプロジェクトを new しました。折角 rvm を使っているので、.rvmrc も作ります。

プロジェクトディレクトリに cd したときに、自動的にバージョンと gem セットが切り替わります。

Gemfile

Readme に従って Gemfile に追記します。

# Gemfile
gem 'rails', '3.1.3'
gem 'community_engine', :git => 'https://github.com/bborn/communityengine.git', :branch => 'rails3'

group :development do
  gem 'sqlite3'
  gem 'heroku'
  gem 'thin'
end

sqlite3 も開発用に移動しておきます。開発用にはお好きな DB をお使いください。

heroku も後でデプロイするのにつかうので入れておきます。

thin は webサーバーです。 rails server の代わりに使いますが、お好みで。

CommunityEngine のバージョンによっては依存する gem のバージョンが異なる場合がありますので、適宜読み替えてください。

application_config.rb 作成

config/application_config.rb を作成します。

これは CE の設定ファイルですが、migrate を実行するのに要求されるので、とりあえず community_name だけ設定したものを作成します。

# config/application_config.rb
configuration = {
  :community_name => "Community Engine Demo",
}
configatron.configure_from_hash(configuration)

Gem のインストール

bundle install で Gem をインストールします。

bundle install --binstubs --without production
bin/rake community_engine:install:migrations
bin/rake db:migrate

–binstubs はプロジェクトルートに bin/ を作り、そこに rails や rake をインストールし、それを bin/rake のように呼び出して使います。

community_engine:install:migrations によって、db/migrate にファイルがコピーされます。

mount (後述)の仕様上、ここにコピーされないと実行できないそうです。

最後に、migrate を実行してデータベースのセットアップが完了します。

ルート追加

config/routes.rb にルートを追記します。

mount という機能は Rails 3.1 からの機能らしいので、それ以下のバージョンでは動かないかもしれません。

mount CommunityEngine::Engine => "/"

ファイル削除

app/views/layouts/application.html.erb、public/index.html の二つを削除します。

rm app/views/layouts/application.html.erb public/index.html

ローカルサーバ立ち上げ

ここまで準備したら、サーバーを立ち上げて動かしてみます。

bin/rails s
# bundle exec thin start # thin を使う場合

画面が表示されたら完了です。

Heroku へデプロイ

ここまで来たら、せっかくなので Heroku へデプロイ。

Heroku のデフォルトDBの PostgreSQL で動作させるため、gem を追加しておきます。

# Gemfile
group :production do
  gem 'pg'
  gem 'therubyracer-heroku', '0.8.1.pre3'
end

ruby 1.9.2 で動作させるために、heroku stack:migrate bamboo-mri-1.9.2 を実行します。

heroku create
heroku stack:migrate bamboo-mri-1.9.2
heroku addons:upgrade logging:expanded
heroku config:add BUNDLE_WITHOUT="development:test"
git push heroku master
heroku rake db:migrate
heroku restart
heroku open

ロガーのアップグレードを行って、heroku logs –tail で動的にログが見れるようにしておきます。

Gemfile の development と test は不要なので、それらを実行しない環境変数を追加します。

heroku rake db:migrate を実行します。

エラー対処

heroku 上(もしくは production)でエラーがでて動かなかったのでいくつか修正しました。

ActionView::Template::Error (community_engine.js isn’t precompiled):

というのが出ていたので、以下を参考に、config/environments/production.rb を修正。

# production.rb
config.assets.compile = true

false になっていたのを true に変更。

私自身まだまだ Rails のスキルが乏しいため、あまり理解せず進めている部分も多々あるので、

良い突っ込みがいただけるとありがたいです。

正式版の公開が楽しみな所ですが、それについていけるように Rails の勉強もしていかないと…。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする