78
Pluginが広げる Railsの魅力 しだら ようじ (dara) 2007-09-29 Ruby勉強会@札幌-5

Pluginが広げるRailsの魅力

Embed Size (px)

DESCRIPTION

Ruby勉強会@札幌-5

Citation preview

Page 1: Pluginが広げるRailsの魅力

Pluginが広げる

Railsの魅力

しだら ようじ (dara)

2007-09-29Ruby勉強会@札幌-5

Page 2: Pluginが広げるRailsの魅力

Railsプログラミングは楽しい

Page 3: Pluginが広げるRailsの魅力

だからサクサク書ける

Page 4: Pluginが広げるRailsの魅力

認証機能

Page 5: Pluginが広げるRailsの魅力

タグ

Page 6: Pluginが広げるRailsの魅力

ファイルアップロード

Page 7: Pluginが広げるRailsの魅力

書けないことはない

Page 8: Pluginが広げるRailsの魅力

でも

Page 9: Pluginが広げるRailsの魅力

それ、前も書いたよ

Page 10: Pluginが広げるRailsの魅力

あるいは

Page 11: Pluginが広げるRailsの魅力

それ、安全?

Page 12: Pluginが広げるRailsの魅力

国際化対応

Page 13: Pluginが広げるRailsの魅力

非同期処理

Page 14: Pluginが広げるRailsの魅力

携帯電話対応 

Page 15: Pluginが広げるRailsの魅力

まじめにやると大変

Page 16: Pluginが広げるRailsの魅力

Plugin

Page 17: Pluginが広げるRailsの魅力

誰が書いても同じようなこと自分には書けないようなこと

Page 18: Pluginが広げるRailsの魅力

誰かが上手に書いてくれる

Page 19: Pluginが広げるRailsの魅力

みんなで書いてみんなで使おう

Page 20: Pluginが広げるRailsの魅力

でも沢山ありすぎて

Page 22: Pluginが広げるRailsの魅力

そこでご紹介

Page 23: Pluginが広げるRailsの魅力

認証

Page 24: Pluginが広げるRailsの魅力

acts_as_authenticated

Page 25: Pluginが広げるRailsの魅力

現時点ではこれが定番

Page 27: Pluginが広げるRailsの魅力

使い方

Page 29: Pluginが広げるRailsの魅力

どんなプラグインでもインストールは

./script/plugin install [URL]

Page 30: Pluginが広げるRailsの魅力

準備% script/generate authenticated user account% rake db:migrate

Page 31: Pluginが広げるRailsの魅力

Userモデル、ログイン画面、

サインアップ画面等ができあがる

http://localhost:3000/account/

Page 34: Pluginが広げるRailsの魅力

画面はシンプルでもちゃんと動く

Page 35: Pluginが広げるRailsの魅力

ログインした後の処理

Page 36: Pluginが広げるRailsの魅力

class ApplicationController include AuthenticatedSystem before_filter :login_from_cookie

class MyController < ApplicationController before_filter :login_required

認証を要求したいControllerに

ApplicationControllerに

before_filter :login_required, :only =>[:edit, :update]

あるいは

(AccountControllerから移動)

Page 37: Pluginが広げるRailsの魅力

<h3>Welcome user</h3><% if logged_in? %> <p> Welcome, <%=h self.current_user.login %> </p><% else %> <!-- login form goes here --><% end %>

ユーザ名を表示するとき

Page 38: Pluginが広げるRailsの魅力

メールによるactivationも(詳しくはドキュメントを)

Page 39: Pluginが広げるRailsの魅力

タグ

Page 40: Pluginが広げるRailsの魅力

acts_as_taggable_on_steroids

Page 41: Pluginが広げるRailsの魅力

DHH氏作acts_as_taggable

の後継

Page 42: Pluginが広げるRailsの魅力

acts_as_taggable_redux もありますが今回は_on_steroids

Page 45: Pluginが広げるRailsの魅力

class Post < ActiveRecord::Base acts_as_taggable belongs_to :user end

p = Post.find(:first) p.tag_list.to_s # "" p.tag_list = "Funny, Silly" p.save p.reload.tag_list.to_s # "Funny, Silly"

p.tag_list.add("Great", "Awful") p.tag_list.remove("Funny")

Postをタグ付け可能にする

使用例

Page 46: Pluginが広げるRailsの魅力

Post.find_tagged_with('Funny, Silly')

Post.find_tagged_with('Funny, Silly', :match_all => true)

タグを持つPost(いずれかの)

あるユーザのPostに関するタグクラウド的なもの

User.find(:first).posts.tag_counts .map{|t| "#{t.name}(#{t.count})"}

タグを持つPost(全て)

Page 47: Pluginが広げるRailsの魅力

データ構造

Page 48: Pluginが広げるRailsの魅力

class ActsAsTaggableMigration < ActiveRecord::Migration def self.up create_table :tags do |t| t.column :name, :string end create_table :taggings do |t| t.column :tag_id, :integer t.column :taggable_id, :integer t.column :taggable_type, :string t.column :created_at, :datetime end add_index :taggings, :tag_id add_index :taggings, [:taggable_id, :taggable_type] end

Page 49: Pluginが広げるRailsの魅力

その他カラム追加でキャッシュ可

デリミタ変更可

Page 50: Pluginが広げるRailsの魅力

国際化対応

Page 51: Pluginが広げるRailsの魅力

Ruby-GetText-Package

Page 53: Pluginが広げるRailsの魅力

インストール

# gem install gettext

Page 54: Pluginが広げるRailsの魅力

$KCODE=’u’require 'gettext/rails'

init_gettext "example" # アプリケーション名

config/environment.rbに

app/controllers/application.rbに

poファイルのファイル名と一致させる

Page 55: Pluginが広げるRailsの魅力

これだけでvalidatesのエラーメッセージが日本語に

Page 56: Pluginが広げるRailsの魅力

lang=ko

lang=ja

msgid "message"msgstr "メッセージ"

msgid "Message|Text"msgstr "テキスト"

Page 57: Pluginが広げるRailsの魅力

その他翻訳の方法は今回は省略

Page 58: Pluginが広げるRailsの魅力

参考になります:

Page 61: Pluginが広げるRailsの魅力

携帯電話対応 

Page 62: Pluginが広げるRailsの魅力

キャリア判別, 位置情報,端末情報, IPアドレス検査,ディスプレイ情報,

文字コード変換, 絵文字 ...

Page 63: Pluginが広げるRailsの魅力

Jpmobile

Page 64: Pluginが広げるRailsの魅力

携帯サイト開発の面倒事をまとめてサポート

Page 66: Pluginが広げるRailsの魅力

どうやってプラグインを見つけていますか?

Page 67: Pluginが広げるRailsの魅力

完成度が低いと自分で書いた方が早かったり

Page 68: Pluginが広げるRailsの魅力

よいプラグインの情報源

Page 69: Pluginが広げるRailsの魅力

人に聞くblog

勉強会のログや報告Rails Chat

Agile Web DevelopmentRAILSify

Page 74: Pluginが広げるRailsの魅力

まとめ

Page 75: Pluginが広げるRailsの魅力

プラグインの使い方プラグインのご紹介プラグイン情報について

Page 76: Pluginが広げるRailsの魅力

良いプラグインを共有しましょう

Page 77: Pluginが広げるRailsの魅力

みんなで書いてみんなで使おう

Page 78: Pluginが広げるRailsの魅力

Plugin