RailsアプリにCKEditorを使う

CKEditorをRailsで使ってみました。

Railsへの組み込みにはckeditor gemを利用しました。画像のアップロードにはCarrierwaveを使用。

https://github.com/galetahub/ckeditor

Gemfileにgemを追加

gem 'ckeditor'
gem 'carrierwave'
gem 'mini_magick'

CKEditorの必要ファイルをgenerate

 bundle exec rails g ckeditor:install --orm=active_record --backend=carrierwave
bundle exec rake db:migrate

app/assets/javascript/application.jsに次の行を追加して、ロードするようにする。

// require ckeditor/init

config/application.rbに次の行を追加して、ライブラリをautoloadさせる

config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

あとはform中で、普通のtext_areaを使うようにcktext_areaメソッドを使うだけ。楽チン。

 

ただ、認証を通して使いたい場合はcancanなどを使わないといけないっぽい・・・。

ActiveRecordを使わずにI18nを使うときの注意

Railsでデータベースに関連付かないモデルを作成するときは,ActiveModelだけを使いますよね.

このときに注意したいのが,I18nのロケールファイルの記述です.

ついうっかり,activerecordに書いてしまうとエラーメッセージなどが翻訳されません.

ActiveModelだけを使うときはactivemodelに書かないと翻訳をしてくれません><

これだけでかなり時間を食ってしまった・・・

Rails3でメール受信(postfix + rvm + bundler + rails runner)

空メール登録機能を実装するために,Rails3でメール受信をやってみました.
rvmとbundlerを使ってるので,面倒になるだろうなーと思ってたらやっぱり面倒だった.

大雑把なRailsでのメール受信の流れは以下の通りです.

  1. postfixがメールを受信
  2. postfixがrails appに標準入力でメールの内容を食わせてやる
  3. rails appがmailオブジェクトに変換し,receiveメソッド内で任意の処理を行う
前提条件
  • postfixで普通にメールが受信できる
  • rvmとbundlerを使用してrails appを開発している
  • mailerとreceiveメソッドは実装済み(rails g mailer HogeMailer receive)
  • rails appの位置: /path/to/app
  • mailerのクラス名: HogehogeMailer
  • rvmの位置(トップ): /path/to/rvm
  • rvmのrubyバージョン: ruby-1.9.3-p0
  • rvmのgemset名: bundler
それでは,本題に入ります.

まずはじめに,postfixからrails appに渡す部分を作成します.

パスの読み込みなどが多いので,1つスクリプトを作りました.(作成にあたっては http://d.hatena.ne.jp/kusakari/20110525/1306315643 を参考にさせていただきました.)
これをRailsアプリのscriptディレクトリ下に置きます.
ここではmail_receiveというファイル名にします.
次に,postfixがrails appにメールの内容を転送するように設定します.
/etc/aliasesファイルを編集します.例えば受信するユーザ名がuser1だとしたら,以下の行を追加します.
user1: "| /path/to/app/script/mail_receive"

(Debian系では)新しいエイリアスを有効にするためにsudo newaliasesを実行します.

最後に,多くの場合postfixユーザがrailsを呼び出すため,logファイルへのアクセス権が無いとrailsにメールを渡すことができません.

chmod 666 /path/to/app/log/*.log

として,アクセス権を解放するのが楽かと思います.

これでおそらくRailsでメールが受信できるはずです.
うまくいかないときは,Railsのログとpostfixのログの両方を見たほうがいいです.
大抵はpostfix→railsの部分でうまくいっていないことが多いので,rails側のログは流れません.
あと,権限的な問題を見るときはsudo -u postfixで実行して調べてみるとか.

とりあえずこんな感じでできました.

Ruby on Railsのインストール(Ubuntu 11.04)

Ruby on Railsのインストールはちょっと面倒だったりします.

ここでは,Ubuntu 11.04でのRails 3.1.0のインストール方法を紹介します.
RVMを使ってRubyをインストールするので,Rubyのみのインストールの参考にもなると思います.

Gitのインストール
Gitが使われているので,Gitをインストールします.
sudo apt-get install git
開発にGitを使う人はついでに
git config --global user.name "名前を記入"
git config --global user.email "メールアドレスを記入"
git config --global color.ui auto

Rubyのインストール
RVM(Ruby Version Manager)を用いて本体をインストールします.
(RVMにインストールすることで,RailsとRubyのバージョンを混在させることができます.経験的にRVMを用いることをおすすめします.)
以下rubyのインストールに必要なパッケージです.(2011/10/09修正)

sudo apt-get install ruby1.9.1 make build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison

RVMのインストール

bash < <(curl -s -B https://rvm.beginrescueend.com/install/rvm)

(何故かSyntaxHighlighterでうまく表示されない...)

.bashrcや.zshrcなどに

[[ -s "~/.rvm/scripts/rvm" ]] && source "~/.rvm/scripts/rvm"

を書きこむ(1つ前のコマンドの出力結果に書かれているもの)

ruby1.9.2をインストール

rvm install 1.9.2

デフォルトとしてパスを通すようにセット

rvm use 1.9.2 --default

Railsのインストール
以下必要なパッケージ

sudo apt-get install sqlite3 libsqlite3-dev

Rails本体のインストール

gem install rails

JavaScriptエンジンのインストール
https://github.com/sstephenson/execjs
Node.jsが楽みたいなので...

sudo apt-get install nodejs

試しにRailsプロジェクトを作って動かしてみる

rails new hello_rails
cd hello_rails
rails server

http://localhost:3000/ にアクセスし,Welcome aboardが表示されるか確認.

おめでとうございます!
Ruby on Railsのインストールが終わりました!!
ハッピーなRailsライフを.

NSEG第19回勉強会で発表してきました!

NSEGというグループの勉強会で,初めて発表をしてきました!
こういう勉強会で発表したのも初めてだったので,とても緊張しました.
http://nseg.jp/?%E7%AC%AC19%E5%9B%9E%E5%8B%89%E5%BC%B7%E4%BC%9A

発表内容は,「Ruby on Railsの紹介」というタイトルで発表しました.

発表スライド
http://www.slideshare.net/falcon_8823/ruby-on-rails-9301899

スライドにに出ているリンク

カンファインの開発版(Rails 3.1.0)
http://conf-in-dev.heroku.com/

Scaffoldのみのバージョン
http://nseg-blog-1.heroku.com/articles

コメント機能を付けたバージョン
http://nseg-blog-2.heroku.com/articles
https://github.com/falcon8823/nseg-blog-2

これからもNSEGをはじめ,いろんな勉強会とかで発表にチャレンジしてみたいなぁと思います.

それでは,明後日からテストなので気持ちを切り替えて頑張ります!