Home » gem » pvを計測できる impressionist を使ってみた ruby on rails

pvを計測できる impressionist を使ってみた ruby on rails

環境

  • ruby2.4.1
  • CentOS
  • ruby on rails 5.1.3

impressionist

アクションごとのインプレッションまたはモデルごとのインプレッションを記録する軽量プラグイン

表示された回数をカウントしてくれる便利な gem です。

 

では実際に使ってみましょう。

まずは設定していきます

gemを追加していきます。

 

gem 'impressionist', '~> 1.6'

bundleでインストールします

$ bundle (bundle install の省略形)

pvを保存するテーブルを作成します。

$ rails g impressionist
Running via Spring preloader in process 32361
 invoke active_record
 create db/migrate/20170817061057_create_impressions_table.rb
 create config/initializers/impression.rb

マイグレーションファイルが作成されましたが

マイグレーションのバージョンが今の場合は4.2となっているので

このバージョンを今使っている rails5.1.3 に合わせます。

デフォルトの場合はバージョン指定されてませんが付け加えます。

class CreateImpressionsTable < ActiveRecord::Migration[5.1]

バージョンを指定しましたので、正常にマイグレーションファイルを実行できると思います。

ではマイグレーションファイルを実行します。

$ rails db:migrate # rails4の場合 rakeコマンドです。
== 20170817080816 CreateImpressionsTable: migrating ===========================
-- create_table(:impressions, {:force=>true})
 -> 0.0293s
-- add_index(:impressions, [:impressionable_type, :message, :impressionable_id], {:name=>"impressionable_type_message_index", :unique=>false, :length=>{:message=>255}})
 -> 0.0351s
-- add_index(:impressions, [:impressionable_type, :impressionable_id, :request_hash], {:name=>"poly_request_index", :unique=>false})
 -> 0.0125s
-- add_index(:impressions, [:impressionable_type, :impressionable_id, :ip_address], {:name=>"poly_ip_index", :unique=>false})
 -> 0.0150s
-- add_index(:impressions, [:impressionable_type, :impressionable_id, :session_hash], {:name=>"poly_session_index", :unique=>false})
 -> 0.0272s
-- add_index(:impressions, [:controller_name, :action_name, :request_hash], {:name=>"controlleraction_request_index", :unique=>false})
 -> 0.0456s
-- add_index(:impressions, [:controller_name, :action_name, :ip_address], {:name=>"controlleraction_ip_index", :unique=>false})
 -> 0.0767s
-- add_index(:impressions, [:controller_name, :action_name, :session_hash], {:name=>"controlleraction_session_index", :unique=>false})
 -> 0.0452s
-- add_index(:impressions, [:impressionable_type, :impressionable_id, :params], {:name=>"poly_params_request_index", :unique=>false, :length=>{:params=>255}})
 -> 0.0471s
-- add_index(:impressions, :user_id)
 -> 0.0491s
== 20170817080816 CreateImpressionsTable: migrated (0.4352s) ==================

使用方法

使いたいモデルに impressionist を記載します

class Post < ApplicationRecord
    is_impressionable
end

コントローラーのshowアクションにpvを取得する設定をしていきます。

コントローラ内のすべてのアクションを記録する場合は下記のようになります

 PostsController < ApplicationController
   impressionist
 end

show アクションのみ記録する場合は下記のようになります。

 PostsController < ApplicationController
   impressionist only: [:show]
 end

上記の方法で指定しないで使う場合は下記のようになります。

def show
  impressionist(@post)
end

どちらの方法でも impressionist 使用することができます

showページを見るたびに、カウントされていきます。
ではviewに閲覧数を表示していきます。

<!-- showを閲覧した回数を表示できます -->
<%= post.impressionist_count %> 

今回は ページビュー の機能のみを使いましたが、
他にも impressionist にはカウンタキャッシュの追加や
一意のインプレッションのみの記録等の機能があるので
使いたい方は掘り下げて調べてみるのもいいかもしれません。

, ,

コメントを残す

%d人のブロガーが「いいね」をつけました。