スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Rails】GoogleAnalyticsを簡単に組み込む

はじめに


Webアプリケーションの運用をしているとGoogleAnalyticsを使ってどれくらいのユーザが利用してくれているか、どのようなページがよく見られているかなどを計測すると思います。今回はそんな便利なGoogleAnalyticsの導入をRailsアプリケーションに簡単に組み込むことができるのでその方法を紹介したいと思います。

トラッキングIDの取得


https://analytics.google.com/analytics/web/
事前に上記URLからアカウントの開設、ご自身のWebサイトのトラッキングIDの取得を取得しておいて下さい。

こちらのページが大変参考になります。
http://dev.classmethod.jp/business/business-analytics/ga_add_trackingid_users/

Gemfileに追記





そのあとbundle installを忘れずに

設定ファイルにトラッキングIDを追記


config/environments/production.rbに下記のような設定を追記します。



viewにhtml表示する処理を追加


今回利用するgemを使えばたった一行viewファイルに追記するだけでhtmlを自動で生成してくれます。
ポイントになるのは全てのviewテンプレートのコンテナ的役割を果たすapp/views/layouts/application.html.erbのheadタグ内に追記することです。



これだけで全てのページにAnalyticsのhtmlコードが自動で付与されることになります。

最後に


GoogleAnalyticsをWebアプリケーションに導入するのはGoogleが提示してくるhtmlをコピペするだけのごく簡単な作業ですが、その作業ですら全てのテンプレートに埋めるとなるとある程度の時間は取られますし、仕様が変わった時に全ての箇所で修正しなければいけなくなります。

今回のようにRailsのテンプレートの仕様(原則全てのテンプレートはapplication.html.erbからyieldされる)とgemを利用すればほんの数分で導入完了できますし、何か大きな仕様があったらgemをアップデートすればきっと対応できるでしょう。(ただしここはgemのメンテナンス頼みという人任せですが。。。)
便利なものは使い倒して効率的にWebサービスを運用していきたいですね。

bgarret/google-analytics-rails
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Rails  Trackback:0 comment:0 

【Rails】ActiveRecordのfind_in_batchesで一定の数ずつ処理をする

はじめに


今回はデータベースからある決まった数ずつデータを取得したい場合を考えます。
上記のようなデータの取得の仕方をしたい場合、ベタなSQLを書いていくイメージだとlimitとoffsetを駆使してループ処理を実装してページングのような処理を実装しないといけないと思います。

Railsならfind_in_batchesという便利なメソッドで簡潔に実現できる方法が用意されているのでその紹介です

実例


例えば10000件の記事を管理しているテーブルarticles(モデルはArticleとします)から記事を50件ずつ処理したい場合以下の様にします。今回はわかりやすいようにさらに具体的にその記事それぞれのはてなブックマーク数を算出する処理を例にとります。



この実例は実は実際のプロダクトであった例で、このような実装をする前は1件ずつhttpリクエストをしていました。なのでだいぶリソースを食っていました。
そもそもはてなのAPIへのリクエストパラメータでurlを50件送ることができることを知らなかったこともあるのですが、知ったところでfind_in_batchesを知らなかったので上記の実例とは全く別の方法で実装していたかもしれません。

おわりに


上記のような例は外部のAPIを利用するようなシーンでは割りとあると思います。
確かAmazonのAPIなどもカンマ区切りでパラーメータの値を複数渡せるようなものがあった気がします。

もちろん他にも利用できるシーンは多々あると思いますし、この方法がかえってボトルネックになってしまうこともあるのでその都度最適な方法を採用しましょう。
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Rails  Trackback:0 comment:0 

【Ruby on Rails】RailsのARでカラム変更しても反映されないことがある

はじめに


RailsのActiveRecordの文字列プロパティに文字列を追加してsaveしたときなぜかDBに反映されないことがありました。
具体的にいうと



正しくは



ActiveRecordは変更があったカラムのみUPDATEされるのは知ってたけど、変更があったかどうかを検知する仕組みについては改めて知りました。ActiveRecordはオブジェクトの前後比較をしているわけではなく各プロパティが代入により変更されたかどうかを保持している模様。

[参考]
ActiveRecord で手動でカラム変更後,save しても変更が反映されない
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Rails  Trackback:0 comment:0 

【Rails】unicornを運用していてメモリで困った(Cannot allocate memory)話と対応方法

unicornでRailsアプリケーションを個人で運用していて、メモリ関連で困ったのでメモしておきます。

状況


[現象]

こんなエラーを吐いてunicornのプロセスが落ちてた

[経緯]
(サーバー代をケチって)EC2のインスタンス一つに2つのRailsアプリケーションを運用していた
それぞれのアプリケーションのunicorn_workerのプロセス数は2つ
アプリケーションの規模的には一方はそれなりのデータ量でそれなりにメモリを食いそう(よくメモリのエラーを吐いてunicornのプロセスが死ぬのはこっち)
もう一方は本当に簡単なサンプルアプリケーションに近いような内容なので割りとメモリは食わなそうな印象(こっちはメモリのエラー吐かない)

[補足]
以前unicorn_workerのプロセス数を3にしてたんだけど、それが原因かと思って2にしたけどまだ起きている

調査


メモリの状況をtopコマンドとかで見てみるとリクエストすればするほど、メモリを食っている状況っぽい
で、さらに調べていくとこんなQiitaの記事を見つけなるほどと原因に気づくことができました
UnicornのWorkerプロセスをリサイクルする

対応


上記の記事にもある通りkzk/unicorn-worker-killerというgemがあるらしく、Railsアプリケーションに導入してみました。超簡単に導入できます。

gemをインストール


config.ruに設定を追記

「require ::File.expand_path('../config/environment', __FILE__)」オフィシャルにこの記述の上に書いて下さいとあるので念のため。

これでunicornを再起動すれば導入完了です。
挙動を確認するため試しにUnicorn::WorkerKiller::MaxRequestsの値を10,20に設定してログを見ていると


こんな感じでリクエスト数が10〜20の間でうまいことunicornのプロセスを再起動してくれているみたいです。

素晴らしいgemですので、使ってみてください。
kzk/unicorn-worker-killer

参考


kzk/unicorn-worker-killer
UnicornのWorkerプロセスをリサイクルする
Unicorn-worker-killerが便利だった件

Tag:Rails  Trackback:0 comment:0 

【Rails】sitemap_generatorを使って、sitemapを簡単に作成する

Railsを利用している人はサイトマップを作るのにsitemap_generatorというgemを使うとお手軽にsitemapが作成できます。

GitHub - kjvarga/sitemap_generator: SitemapGenerator

準備


Gemfileへ追記してbundle installします


rakeを実行します


そうするとconfig/sitemap.rbができます。

sitemapを作成する処理を書いてみる


先ほどの準備の段階でできたconfig/sitemap.rbを編集してsitemapに載せたいURLを追記する処理を書いていきます。
先に実例から



ポイントになるのはSitemapGenerator::Sitemap.createに渡すブロックの部分です。
addでURLのパスを指定しているのはすぐに分かるかと思います。大事なのはProductのレコードを引いてきてaddしている部分です。このように比較的直感的にsitemapにURLを追加できるので、わざわざ自分たちでXMLを組み立てるような処理が一切いらないのが非常に助かります。

sitemapの作成&検索エンジンに知らせる


これまでで手軽に作れることはわかりましたが、実際に作ってみます。



rake sitemap:refres
を実行するとpublicディレクトリ以下にsitemap.xml.gzができていることが分かります。
さらにGoogleとBingにping送信までしてくれるのでこのコマンド一つでsitemapの作成から検索エンジンに更新を知らせるところまで出来てしまいます。

便利なのでRailsを使っている方でsitemapを自力で作成している方は採用してみてもいいかもしれません。

こちらの記事も参考にどうぞ
【Rails】Railsでrobots.txtなどのstaticファイルをproductionできちんと配信する

Tag:Rails  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。