しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Ruby

rspec-retryでfeature specを安定させる

rspec-retryという、失敗したテストを再実行するGemを使ってみました。 GitHub - NoRedInk/rspec-retry: retry randomly failing rspec example まずはRailsのプロジェクトを作ってfeature specを書きます。 require 'rails_helper' feature 'test' do scena…

Rubyの配列のzipメソッドを使ってみる

Rubyの配列にはzipというメソッドがあって、それを使うと2つの配列をつなげる事ができます。 [1, 2, 3].zip([2, 3, 4]) # → [[1, 2], [2, 3], [3, 4]] 引数の要素数が少ない場合、そこにはnilが入ります。 [1, 2, 3].zip([2, 3]) # → [[1, 2], [2, 3], [3, n…

active-rest-clientというGemでAPIを叩いてみる

RailsからAPIを叩くためにactive-rest-clientというGemを使ってみました。 使い勝手はActiveResourceに近いものでした。 github.com インストールはいつものようにBundlerを使います。 gem 'active_rest_client' データ取得/更新の為には、下記のようにModel…

RailsでMySQL5.6に変えたのにMysql2::Error: Can't initialize character set utf8mb4が出た時の対処法

MySQLを5.1 → 5.6にアップグレードしたのにRailsで表題のエラーが出た時の対処法です。 結果としてはmysql2をインストールし直せば解決しました。 5.1の時にbundle installしたので、その時のものが悪さをしていたようです。 gem uninstall mysql2 bundle in…

【Rails】acts_as_taggableで簡単にModelにタグ付けする

github.com いつものようにBundlerでインストールします。 gem 'acts-as-taggable-on' 以下のコマンドでDBのセットアップをします。 rake acts_as_taggable_on_engine:install:migrations rake db:migrate MySQLを使っている場合は更に以下コマンドを実行し…

【Ruby】Google AdsenseのAPIでAdmobの広告売上を取得する

Admobのデータを取得する方法です。 まずはBundlerでgoogle-api-clientをインストールします。 gem 'google-api-client' 次にrefresh_token・client_id・client_secretを取得します。 この辺りは下記の記事が詳しいです。 Google API OAuth2.0のアクセストー…

`require': cannot load such file -- google/api_client (LoadError) エラーの対応

GoogleのAPIを使う時に表題のエラーが出た時の対応です。 GoogleAPIの仕様が変わったため'google/apis/{サービス毎の名前}で呼び出す必要があります。 # require 'google/api_client' require 'google/apis/adsense_v1_4'

Railsでベーシック認証をかける

authenticate_or_request_with_http_basicメソッドを使うと実現できます。 class ApplicationController < ActionController::Base before_action do authenticate_or_request_with_http_basic do |user, password| user == "admin" && password == "passwor…

splitを使ってRailsで簡単ABテスト

splitというA/Bテストが簡単にできるGemを試してみました。 github.com 初期設定 このGemではredisを使うのであらかじめインストールしておきます。 brew install redis redis-server /usr/local/etc/redis.conf Bundlerでsplitをインストールします。 gem '…

GonというGemを使ってRailsからJavascriptに値を渡す

RailsからJavascriptに値を渡す方法です。 インストール インストールはbunlderを使います。 gem 'gon' 使い方 設定 htmlのheadタグの中で以下の呼び出しをします。 Gon::Base.render_data こうすると以下のようにレンダリングされます。 <script> //<![CDATA[ windo</script>…

rack-mini-profilerでRailsアプリの表示速度を表示する

rack-mini-profilerというGemを使うと、画面が表示されるまでの時間を画面上に表示してくれます。 github.com インストール Gemfileにrack-mini-profilerを追加します。 本番環境では出したくないのでdevelopだけにインストールする設定にすると良いです。 g…

Authorityというユーザーの権限管理をするGemを試してみる

ユーザーの権限管理をしてくれるauthorityというGemを試してみました。 github.com 初期設定 いつものようにBundlerでインストールします。 gem 'authority' 下コマンドで初期設定をします。 rails g authority:install 使い方 準備 UserモデルとCommentモデ…

punditというユーザーの権限管理をするGemを試してみる

ユーザーの権限管理をしてくれるGemを試してみました。 github.com インストール installはいつもどおりbundlerで行います。 gem "pundit" 初期設定 ApplicationControllerでPunditをincludeします。 pundit_userは後で登場するApplicationPolicyの初期化時…

ActiveRecordのexists?メソッドが発行しているSQLを調べてみる

ActiveRecordでデータが存在するかを調べる時はpresent?よりのexists?の方が良いと聞いたので違いを調べてみました。 調べたところ「LIMIT 1の有無」と「カラムの情報を取得するかどうか」が違っていました。 2.2.0 :005 > Item.where(name: 'name').exists?…

require_dependencyの実装を追いかけてみる

require_dependencyはrequireとどう違うの? というところから色々調べてみたメモです。 require_dependencyとrequireの違いはググったら一発解決しました。 違いは下の通りです。 requireはロード済のものはキャッシュして再読み込みしないけどrequire_depen…

個人情報カラムの暗号化に丁度いいGem、attr_encrypted

attr_encryptedというGemに関する調査メモです。 attr_encryptedとは カラムの暗号化を簡単にしてくれるGemです。 基本的な使い方 GemfileにGemの追加 gem 'attr_encrypted' テーブル作成。 暗号化したいカラムは先頭にencrypted_を付けます。 class CreateI…

Rails4でJSONを作るならto_jsonよりjbuilder

jbuilderを使いはじめたのでメモ jbuilderとは jsonのテンプレートエンジンです。 xxx.json.jbuilderファイルにDSLを記述するとJSONにして返してくれるという物。 ファイルに記述するので難しいjson形式を返す時とかは便利そうです。 DHHが作ったもので、Rai…

Rails4.1未満でカラムを列挙型として扱えるGem「enumerize」

enumerizeというGemを試してみたのでそのメモです。 enumerizeとは RailsのModelで列挙型を使えるようになるGemです。 使い方 使うための手順 利用する為の手順は下の通りです。 Gemfileに追加してModelに下の2行を追加するだけ。 gem 'enumerize' class Cre…

RSpec(rspec-rails 以外)のmatcher一覧 その1

RSpec自体にあるmatcherの一覧を調べました。 長いので2回に分けています。 be_truthy if文でtrueと判定される物かどうかを調べます。 nilとfalse以外を通します。 RSpec2まではbe_trueという名前でした。 しかし「be_trueなのにtrue以外(数字や文字列)も通る…

Railsで論理削除をするacts_as_paranoidを試してみた

論理削除を実現してくれるgem、acts_as_paranoidを試してみました。 環境 Ruby2.1.5 Rails4.2.0 インストール まずはGemfileに以下のように追加してbundle install。 gem 'acts_as_paranoid' しかしWEBrickを起動しようとすると下記エラー。 どうやらrails4…

rbenvについてやrvmと比べた時の長所を調べた

rbenvについて色々と調べてみました。 使った感想、rbenvのメリットやデメリットについて書いていきます。 rbenvとは 読み方 「あーるびーえんぶ」が一般的みたいです。 最初は「るびーえんぶ」だと思ってました。 概要 リポジトリはこちらになります。 最初のバ…

bundle exec について詳しく調べてみた

会社でrake db:migrateの前にbundle exec使うと動くよー、って教わったけどなんで動くようになるか良く分からなかったので調べてみました。 bundle execってそもそもなんなのか 調べた所 bundle exec は現在のGemfileを見て最適なGemを使ってくれるオプショ…

RSpecを試してみた

RSpecのインストール、簡単な動作確認を行いました。 インストール (公式Githubを参考にしました。 まずはGemfileに下記を追加。 Gemfileのgroupを初めて知りました。 group :development, :test do gem 'rspec-rails', '~> 3.0' end bundle install でgemを…

RVMについて調べてみた。

今更ですがrvmについてのメモ書き。 rvmとは rvmとは複数のRubyバージョンを同居させる為のツールです。 複数のバージョンのRubyやgemをインストールして、それらをコマンドで切り替える事ができます。 rvmのインストール インストール方法は下の公式サイト…