SlideShare une entreprise Scribd logo
1  sur  34
Ruby on RailsでTwitter連携アプリをサクっと作る


       Fumitaka Yanase : giftee.co
                @i7a16k
Agenda
1. ruby / rails に関して

2.Twitter連携アプリ作成の実例

  2.1.下準備

  2.2.Sign in with Twitter

  2.3.Tweet

  2.4.Deploy
1.Ruby on Rails に関して
about:rails(1)
「同じ事を繰り返さない」「設定よりも規約」を理念としたフレームワーク

 railsのフォルダ構造(抜粋)

   (アプリ名)
     |-app/
        |-assets
        |-controllers
        |-helpers
        |-mailers
        |-models
        |-views
     |-config/
     |-db/
     |-doc
     |-lib
     |-log
     |-public
     |-script
     |-test
     |-tmp
     |-vendor
about:rails(2)
railsはルータとMVCにより制御される

                                        http://my.url/hoge/piyo
                                                   ↓
                    routes.rb
                                     fooコントローラのbarメソッド

        ①                ②
                    controller

                ④                ③
    ⑤        View                model
2.Twitter連携アプリ作成の実例
キティったー
こんなのこれから作ってみます


http://bit.ly/twtr_hack_rails
2.1 下準備
アプリ登録
Twitterにアプリの登録を行う
   dev.twitter.com




                         なんかいれとく
アプリ登録
Write権限も取れるように
   dev.twitter.com




                       Read and Write に変更
   dev.twitter.com




                                       Consumer
                                         key /
                                   Cosumer secretを
                                     控えておく
rails インストール
ruby / rubygemsのインストール(説明省略)

rubygemsを使ってrailsをインストール

gem install rails
rails準備
 rails new コマンドにより、アプリケーションの枠組みが作成される

    rails new <アプリ名>

生成されるファイル群

-rw-r--r--    1   i7a16k   staff    765   7   29   14:02   Gemfile
-rw-r--r--    1   i7a16k   staff   2463   7   29   14:02   Gemfile.lock
-rw-r--r--    1   i7a16k   staff   9208   7   29   14:02   README.rdoc
-rw-r--r--    1   i7a16k   staff    274   7   29   14:02   Rakefile
drwxr-xr-x    8   i7a16k   staff    272   7   29   14:02   app/
drwxr-xr-x   10   i7a16k   staff    340   7   29   14:02   config/
-rw-r--r--    1   i7a16k   staff    159   7   29   14:02   config.ru
drwxr-xr-x    3   i7a16k   staff    102   7   29   14:02   db/
drwxr-xr-x    3   i7a16k   staff    102   7   29   14:02   doc/
drwxr-xr-x    4   i7a16k   staff    136   7   29   14:02   lib/
drwxr-xr-x    3   i7a16k   staff    102   7   29   14:02   log/
drwxr-xr-x    8   i7a16k   staff    272   7   29   14:02   public/
drwxr-xr-x    3   i7a16k   staff    102   7   29   14:02   script/
drwxr-xr-x    8   i7a16k   staff    272   7   29   14:02   test/
drwxr-xr-x    3   i7a16k   staff    102   7   29   14:02   tmp/
drwxr-xr-x    4   i7a16k   staff    136   7   29   14:02   vendor/
2.2 Sign in with Twitter
TOPページ表示(1)
controllerを追加し、TOPページを作成する

    rails g controller home index

生成されるファイル群

     create   app/controllers/home_controller.rb
      route   get "home/index"
     invoke   erb
     create     app/views/home
     create     app/views/home/index.html.erb
     invoke   test_unit
     create     test/functional/home_controller_test.rb
     invoke   helper
     create     app/helpers/home_helper.rb
     invoke     test_unit
     create       test/unit/helpers/home_helper_test.rb
     invoke   assets
     invoke     coffee
     create       app/assets/javascripts/home.js.coffee
     invoke     scss
     create       app/assets/stylesheets/home.css.scss
TOPページ表示(2)
root設定をroutes.rbに追加
    routes.rb
   root :to => ‘home#index’


public/index.htmlを削除

   rm public/index.html

  ※ちなみにさっきでてたのはこのpublic.html
Twitter ログイン
gem設定をGemfileに追加
     Gemfile

  gem ‘omniauth-twitter’


  bundle install

omniauth用の設定ファイルを追加

 config/initializers/omniauth.rb
  TWITTER_CONSUMER_KEY = ‘xxxxx’
  TWITTER_CONSUMER_SECRET = ‘yyyy’

  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :twitter, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET
  end

 ※dev.twitter.comで取得したconsumer keyとconsumer secretを使う
Twitter ログイン
Twitterログイン用のリンク追加
  /app/views/home/index.html.erb
  <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %>
callbackの制御
ログイン用のコントローラーを作成

   rails g controller sessions




routes.rbに設定を追加
      routes.rb
   match ‘/auth/twitter/callback’ => ‘sessions#create’



sessions_controller.rb に、createメソッド追加
  sessions_controller.rb
   def create
       raise request.env[“omniauth.auth”].to_yaml
   end

                                                         ユーザ情
                                                報がこの中に入っているので
                                                     確認してみる
取得された情報
oauth後取得されている情報

  provider: twitter
  uid: '118282075'
  info:
    nickname: i7a16k
    name: i7a
    location: Spikers Camp
    image: http://a0.twimg.com/profile_images/1602452666/
  i7aicon_normal.jpg
    description: i7aで「いな」と読ませたいらしいです。16kはspikeoutというゲーム
  より。エンジニアとして http://giftee.co/
     の中の人をやってます。ちなみにIME and DiMENSiONの中の人。男なんですけど、キ
  ティが好きです。 (キティの中の人含め)
    urls:
      Website: http://and-d.i7a16k.net/
      Twitter: http://twitter.com/i7a16k
  credentials:
    token: 118282075-xxxxxxxxxxxxxxxxxxxxxxxxx
    secret: yyyyyyyyyyyyyyyyyyyyyyyy
モデルを作ろう
userモデルを作成

  rails g model user provider:string uid:string
  name:string token:string secret:string

  rake db:migrate



       カラム名                 型                意味


           id             integer           自動生成


        provider          string          連携サービス名


          uid             string        連携サービスのユーザid


         name             string         連携サービスでの名前


         token            string          アクセストークン


        secret            string         シークレットトークン
ログインロジック
sessions#createにロジック追加
 sessions_controller.rb
    def create
      auth = request.env[“omniauth.auth”]
      user = User.find_by_provider_and_uid(auth[“provider”],auth[“uid”])
    || User.create_with_omniauth(auth)
      session[:user_id] = user.id

      redirect_to root_url
    end


user.rb にユーザ作成処理追加
         user.rb
    self.create_with_omniauth(auth)
      create! do |user|
          user.provider = auth[“provider”]
          user.uid = auth[“uid”]
          user.name = auth[“info”][“name”]
          user.token = auth[“credentials”][“token”]
          user.secret = auth[“credentials”][“secret”]
      end
    end
ログイン後
application_controller.rb に current_user メソッド追加
  application_controller.rb
 helper_method :current_user

 private

 def current_user
   @current_user ||= User.where(:id => session[:user_id]) if session[:user_id]
 end


index.html.erbにログイン状態に応じた制御を追加

       index.html.erb
    <% if current_user %>
      こんにちは <%=current_user.name%> さん
    <% else %>
      <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %>
    <% end %>
ログアウト実装
index.html.erb に ログアウトのリンク追加

     index.html.erb
<% if current_user %>
  こんにちは <%=current_user.name%> さん
  <%= link_to ‘Sign Out’, signout_path %>
<% else %>
  <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %>
<% end %>


routes.rb にログアウトの設定追加
     index.html.erb
   match ‘/signout’ => ‘sessions#destroy’, :as => :signout


sessions_controller にdestroyメソッド追加
  sessions_controller.rb
   def destroy
     session[:user_id] = nil
     redirect_to root_url
   end
2.3 Tweet ・・・ はまた次回?

Contenu connexe

Tendances

Garageを触ってみた
Garageを触ってみたGarageを触ってみた
Garageを触ってみた
Yoichi Toyota
 
最近のRails開発のはなし
最近のRails開発のはなし最近のRails開発のはなし
最近のRails開発のはなし
Yoichi Toyota
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入
fagai
 
CodeIgniterのページングに関して。
CodeIgniterのページングに関して。CodeIgniterのページングに関して。
CodeIgniterのページングに関して。
Takatsugu Ishikawa
 
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
peryaudo
 

Tendances (20)

Garageを触ってみた
Garageを触ってみたGarageを触ってみた
Garageを触ってみた
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール
 
最近のRails開発のはなし
最近のRails開発のはなし最近のRails開発のはなし
最近のRails開発のはなし
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
 
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsugSpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails Tutorial
 
FuelPHPでSentry導入
FuelPHPでSentry導入FuelPHPでSentry導入
FuelPHPでSentry導入
 
CodeIgniterのページングに関して。
CodeIgniterのページングに関して。CodeIgniterのページングに関して。
CodeIgniterのページングに関して。
 
Apache Module
Apache ModuleApache Module
Apache Module
 
Haikara
HaikaraHaikara
Haikara
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
One night Vue.js
One night Vue.jsOne night Vue.js
One night Vue.js
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
 
Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10Ruby on Rails Tutorial Chapter8-10
Ruby on Rails Tutorial Chapter8-10
 
WordPress と Bootstrap
WordPress と BootstrapWordPress と Bootstrap
WordPress と Bootstrap
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Docker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレDocker+CoreOS+GCEで自動スケール分散レイトレ
Docker+CoreOS+GCEで自動スケール分散レイトレ
 

En vedette (8)

Map Making with QGIS
Map Making with QGISMap Making with QGIS
Map Making with QGIS
 
Map Making with QGIS - Part II
Map Making with QGIS - Part IIMap Making with QGIS - Part II
Map Making with QGIS - Part II
 
Rails Plugins - Linux For You, March 2011 Issue
Rails Plugins - Linux For You, March 2011 IssueRails Plugins - Linux For You, March 2011 Issue
Rails Plugins - Linux For You, March 2011 Issue
 
Ruby gems
Ruby gemsRuby gems
Ruby gems
 
Rails e suas Gems
Rails e suas GemsRails e suas Gems
Rails e suas Gems
 
Omniauth
OmniauthOmniauth
Omniauth
 
Some OAuth love
Some OAuth loveSome OAuth love
Some OAuth love
 
APIs for mobile
APIs for mobileAPIs for mobile
APIs for mobile
 

Similaire à Rails and twitter #twtr_hack

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発
Hironao Sekine
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
 

Similaire à Rails and twitter #twtr_hack (20)

Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
初めてのPadrino
初めてのPadrino初めてのPadrino
初めてのPadrino
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
Fig
FigFig
Fig
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発Sflt17 meteorではじめる最速ウェブアプリ開発
Sflt17 meteorではじめる最速ウェブアプリ開発
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2
 
G0042 h
G0042 hG0042 h
G0042 h
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 

Rails and twitter #twtr_hack

  • 2. Agenda 1. ruby / rails に関して 2.Twitter連携アプリ作成の実例 2.1.下準備 2.2.Sign in with Twitter 2.3.Tweet 2.4.Deploy
  • 3. 1.Ruby on Rails に関して
  • 4. about:rails(1) 「同じ事を繰り返さない」「設定よりも規約」を理念としたフレームワーク railsのフォルダ構造(抜粋) (アプリ名) |-app/ |-assets |-controllers |-helpers |-mailers |-models |-views |-config/ |-db/ |-doc |-lib |-log |-public |-script |-test |-tmp |-vendor
  • 5. about:rails(2) railsはルータとMVCにより制御される http://my.url/hoge/piyo ↓ routes.rb fooコントローラのbarメソッド ① ② controller ④ ③ ⑤ View model
  • 9. アプリ登録 Twitterにアプリの登録を行う dev.twitter.com なんかいれとく
  • 10. アプリ登録 Write権限も取れるように dev.twitter.com Read and Write に変更 dev.twitter.com Consumer key / Cosumer secretを 控えておく
  • 11. rails インストール ruby / rubygemsのインストール(説明省略) rubygemsを使ってrailsをインストール gem install rails
  • 12. rails準備 rails new コマンドにより、アプリケーションの枠組みが作成される rails new <アプリ名> 生成されるファイル群 -rw-r--r-- 1 i7a16k staff 765 7 29 14:02 Gemfile -rw-r--r-- 1 i7a16k staff 2463 7 29 14:02 Gemfile.lock -rw-r--r-- 1 i7a16k staff 9208 7 29 14:02 README.rdoc -rw-r--r-- 1 i7a16k staff 274 7 29 14:02 Rakefile drwxr-xr-x 8 i7a16k staff 272 7 29 14:02 app/ drwxr-xr-x 10 i7a16k staff 340 7 29 14:02 config/ -rw-r--r-- 1 i7a16k staff 159 7 29 14:02 config.ru drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 db/ drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 doc/ drwxr-xr-x 4 i7a16k staff 136 7 29 14:02 lib/ drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 log/ drwxr-xr-x 8 i7a16k staff 272 7 29 14:02 public/ drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 script/ drwxr-xr-x 8 i7a16k staff 272 7 29 14:02 test/ drwxr-xr-x 3 i7a16k staff 102 7 29 14:02 tmp/ drwxr-xr-x 4 i7a16k staff 136 7 29 14:02 vendor/
  • 13.
  • 14. 2.2 Sign in with Twitter
  • 15. TOPページ表示(1) controllerを追加し、TOPページを作成する rails g controller home index 生成されるファイル群 create app/controllers/home_controller.rb route get "home/index" invoke erb create app/views/home create app/views/home/index.html.erb invoke test_unit create test/functional/home_controller_test.rb invoke helper create app/helpers/home_helper.rb invoke test_unit create test/unit/helpers/home_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/home.js.coffee invoke scss create app/assets/stylesheets/home.css.scss
  • 16.
  • 17. TOPページ表示(2) root設定をroutes.rbに追加 routes.rb root :to => ‘home#index’ public/index.htmlを削除 rm public/index.html ※ちなみにさっきでてたのはこのpublic.html
  • 18.
  • 19. Twitter ログイン gem設定をGemfileに追加 Gemfile gem ‘omniauth-twitter’ bundle install omniauth用の設定ファイルを追加 config/initializers/omniauth.rb TWITTER_CONSUMER_KEY = ‘xxxxx’ TWITTER_CONSUMER_SECRET = ‘yyyy’ Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET end ※dev.twitter.comで取得したconsumer keyとconsumer secretを使う
  • 20.
  • 21. Twitter ログイン Twitterログイン用のリンク追加 /app/views/home/index.html.erb <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %>
  • 22.
  • 23. callbackの制御 ログイン用のコントローラーを作成 rails g controller sessions routes.rbに設定を追加 routes.rb match ‘/auth/twitter/callback’ => ‘sessions#create’ sessions_controller.rb に、createメソッド追加 sessions_controller.rb def create raise request.env[“omniauth.auth”].to_yaml end ユーザ情 報がこの中に入っているので 確認してみる
  • 24.
  • 25. 取得された情報 oauth後取得されている情報 provider: twitter uid: '118282075' info: nickname: i7a16k name: i7a location: Spikers Camp image: http://a0.twimg.com/profile_images/1602452666/ i7aicon_normal.jpg description: i7aで「いな」と読ませたいらしいです。16kはspikeoutというゲーム より。エンジニアとして http://giftee.co/ の中の人をやってます。ちなみにIME and DiMENSiONの中の人。男なんですけど、キ ティが好きです。 (キティの中の人含め) urls: Website: http://and-d.i7a16k.net/ Twitter: http://twitter.com/i7a16k credentials: token: 118282075-xxxxxxxxxxxxxxxxxxxxxxxxx secret: yyyyyyyyyyyyyyyyyyyyyyyy
  • 26. モデルを作ろう userモデルを作成 rails g model user provider:string uid:string name:string token:string secret:string rake db:migrate カラム名 型 意味 id integer 自動生成 provider string 連携サービス名 uid string 連携サービスのユーザid name string 連携サービスでの名前 token string アクセストークン secret string シークレットトークン
  • 27.
  • 28. ログインロジック sessions#createにロジック追加 sessions_controller.rb def create auth = request.env[“omniauth.auth”] user = User.find_by_provider_and_uid(auth[“provider”],auth[“uid”]) || User.create_with_omniauth(auth) session[:user_id] = user.id redirect_to root_url end user.rb にユーザ作成処理追加 user.rb self.create_with_omniauth(auth) create! do |user| user.provider = auth[“provider”] user.uid = auth[“uid”] user.name = auth[“info”][“name”] user.token = auth[“credentials”][“token”] user.secret = auth[“credentials”][“secret”] end end
  • 29.
  • 30. ログイン後 application_controller.rb に current_user メソッド追加 application_controller.rb helper_method :current_user private def current_user @current_user ||= User.where(:id => session[:user_id]) if session[:user_id] end index.html.erbにログイン状態に応じた制御を追加 index.html.erb <% if current_user %> こんにちは <%=current_user.name%> さん <% else %> <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %> <% end %>
  • 31.
  • 32. ログアウト実装 index.html.erb に ログアウトのリンク追加 index.html.erb <% if current_user %> こんにちは <%=current_user.name%> さん <%= link_to ‘Sign Out’, signout_path %> <% else %> <%= link_to ‘Sign in with Twitter’, ‘/auth/twitter’ %> <% end %> routes.rb にログアウトの設定追加 index.html.erb match ‘/signout’ => ‘sessions#destroy’, :as => :signout sessions_controller にdestroyメソッド追加 sessions_controller.rb def destroy session[:user_id] = nil redirect_to root_url end
  • 33.

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n