vim 7.4 のInsertモードでbackspace(delete)を有効にする
.vimrc に以下を追加する
set backspace=2
ubuntu + Apache で日本語の文字化けを解消する
ubuntuを英語環境で構築した場合は、日本語の言語パッケージをインストールします。*1
$sudo aptitude install language-pack-ja $sudo dpkg-reconfigure locales
文字コードの設定ファイルを開く*2
vim /etc/apache2/conf-enabled/charset.conf
AddDefaultCharset UTF-8のコメントアウトを外す。
参考URL:
Rails4 でグラフを描いてみる ( Lazy_high_charts , Chartkick )
データベースに保存されたデータをグラフで綺麗に表示させたいなーと思ったので、調べたことやつまづいたことをまとめようと思います。
gemを探すにあたって、以下の記事を参考にしました。
Ruby on Rails で使えるグラフ・チャート用ライブラリまとめ | EasyRamble
さて、今回は Lazy_high_chartとChartkickの2つのGemを使ってみました。
Lazy_high_chartを使ってみた感想としては、 Good
- ラベルなどの指定を結構細かくできる
- グラフが綺麗(Highchartsのグラフのデザインが素敵)
- グラフの種類が豊富で、結構細かな設定ができる
Bad
- Capistranoでproduction環境にdeployした時に、Asset:precompileがフリーズした(地味にかなりハマる。javascript_include_tagで直接指定して対策)
次に、Chartkickを使った感想としては、
Good
- シンプルで実装がとても簡単
- google chart と highchartsのグラフどちらでも表示できる
- library:{ ... }の中に、上記apiのオプションを指定することで、タイトルや軸の設定ができる
Bad
- 線の種類が4種類に限定される。
- 線グラフがスプラインに限定される
いずれも詳細設定は、Javascriptからおこなうことになりそうです。 今回、Lazy_high_chartとChartkickの2つを試してみましたが、 どちらもサクッとグラフを描くことができる素敵なGemでした!
Railsのパフォーマンスを上げるTIPS
最近ようやくRailsアプリのパフォーマンスを気にかけられるようになってきました。 ActiveRecordはとても便利ですが、レコードが増えてくるとどんどん重くなってきますので、設計の段階から対策をとっておきたいものです。 導入コストが少ない対策としては、 * SQLに索引をつける * N+1問題に気をつける * キャッシュを使う * 無駄なデータを引きすぎてる などがポイントなようです。
これからさらに勉強するために、参考になる記事をまとめてみました。
さいきんの Rails サービスを高速化をしてみた - 2nd life
[Rails 高速化] ページキャッシュ、N+1対策、SQLチューニング - 酒と泪とRubyとRailsと
Rils4で Russian Doll Caching を楽しむためのまとめ [俺の備忘録]
現実の世界の Rails、第 3 回: ActiveRecord を最適化する
勉強している間に参考になった記事があったら追加していきます。
Rails 4 と KoalaでFacebook Graph APIをつかう
Koalaを使ってFacebookイベントに参加した人の名前を取得してみます。
Gemfile
gem 'koala'
bundle install
FBのディベロッパーページから、アクセストークンをコピーする。
key = {ACCESS_TOKEN} graph = Koala::Facebook::API.new(key) fb_event_id = {FACEBOOK_EVENT_ID} status = {RSVP_STATUS} #ここでは"attending" attendee = graph.get_connections(fb_event_id, status, locale: "jp_JP")
これでattendeeに参加者の名前(日本語名)と、IDがハッシュ形式で取得されます。 ちなみにRSVP_STATUSは"attending"、"maybe"、"declined"、"noreply"がありますので、目的に合わせて使い分けます。
Rails + rbenv + Capistrano + EC2 + Apache + Passenger
EC2のデプロイで色々と手順が増えたので、まとめてみます。 (抜けているところは、後々追記していきます。)
- EC2のセキュリティーグループを作成
- EC2のインスタンスを作成
- 公開キーを保存
- 公開キーのパーミションを変更
- EC2のElasticIPを作成
- EC2のElasticIPとインスタンスを紐付け
- ターミナルからEC2のサーバーにSSH接続
- EC2のサーバーに下記をインストール
sudo yum install \ git make gcc-c++ patch \ libyaml-devel libffi-devel libicu-devel \ zlib-devel readline-devel \ mysql mysql-devel sqlite sqlite-devel
- EC2のサーバーにrbenvをインストール
- EC2のサーバーにrubyをインストール
- 開発環境のバージョンと合わせること
- EC2のサーバーにapacheをインストール
- EC2のサーバーにpassengerをインストール
- EC2のサーバーの公開キーを作成
- EC2のサーバーに公開用Rootディレクトリを作成
- sudo chown ec2-user myproject
- sudo chgrp ec2-user myproject
- Githubに公開キーを登録
- Githubにリモートレポジトリを作成
- GithubのリモートレポジトリにPush
- 開発環境にcapistranoをインストール
- Capfileを編集
- rbenv_type は :systemか:userにすること
- config/deploy.rbを編集
- config/deploy/production.rbを編集
- database.ymlを編集
- productionの/db/production.sqlite3から/var/www/APP_NAME/db/production.sqlite3に変更
参考
Upgrade to Capistrano 3.0 - Qiita
EC2 (Amazon Linux) に Ruby on Rails + Passenger + Apache 環境を構築する | Developers.IO
【Rails4】参照キーが関連付けたテーブルに存在しない場合にレコードを取得する方法
タイトルが長いw
目的
has_manyで関連付けたテーブルに参照キーが存在しないときにレコードを取得すること。
Member.where.not(:id => Relationship.select(:member_id).map(&:member_id))
Relationshipテーブルに記録されたmember_idを配列にしています。