kikeda1104's blog

備忘録・技術に関することを書いています。(webエンジニア)

2016-09-01から1ヶ月間の記事一覧

Rspec callbackのテスト(rails)

callback(before_actionなど)で利用するメソッドのテスト方法を書いていきます。 Controller class DashBoardController < ApplicationController before_action :set_user def index # ... end private def set_user @user = User.where(id: session[:user_…

認証機能のユニットテスト(controller)

今日は、自作のアプリでユニットテストを作っていたので、このあたりを書いていきたいと思います。 自作アプリでは認証のgemは使っていないんですが、記事のためにsorceryを使って書いていきます。 gemの導入手順は省いています。 準備 # Gemfile gem 'sorce…

whereの指定方法

ActiveRecordを利用していて、どうやってwhereを書くのかわからないことがありますし 良く聞かれたりもしますので、書き方について、まとめておきます。 where ActiveRecordの条件を記述する際に利用します。 model # app/models/user.rb class User < Appli…

サービス層の導入

業務で、サービスクラスをmodelsに入れていたので、そのファイルの移動と自作でサービス層を追加しました。 serviceクラス Modelに書くにはコードの量が多い機能で、Fat modelになる恐れがあり、concernに移す事も考えましたが、共通で利用することもないた…

ActiveRecord::Relation#orのworkaround

先日書いた記事の付け足しになりますね。orを利用して検索ロジックを書いていましたが mergeや、whereを利用することで構造に不一致になるケースがあり、HACK,WORKAROUNDで対処しました。 原因はなんとなくイメージできているんですが、詳しい方いましたら、…

Railsでmysqlのviewsを利用する。

弊社のプロジェクトで、viewを利用していたので、覚え書き。 views CREATE VIEW user ( id, name, age ) AS SELECT id, name, age FROM A UNION SELECT id, name, age FROM B; ここは、migrationに置き換えることもできる。 model モデルは、Railsのmodelと…

ActiveRecord::Relation#or

弊社の新規プロジェクトでは、Rails5が使われていてそのおかげで、orが利用できた。 今日は、その辺りをまとめてみる。 ActiveRecord::Relation#or Rails 4系では、sqlのorをアプリで実装しようとするとfind_by_sql、where、joinsなどに直接sqlを書くか。Are…

form_tag、form_forからutf8というパラメータをはずす

検索の機能で、HTTP methodsをpostからgetに切り替えた際に、utf8というパラメータが含まれていたので、これを取り除いた。 form_for, form_tagから自動で生成されるinputタグだが、不要だったので、自動生成されないように変更した。 モンキーパッチ module…

vim snippetの利用

vimからsnippetは以前から利用していますが、環境毎に設定していることがあり、再設定していたので こちらにまとめておく。 環境 Mac OS vim .vimrc .vimrcに追加 ... if &compatible set nocompatible " Be iMproved endif execute 'set runtimepath^=~/.vi…

Rubyのモジュール

コードを整理する際に、classではなく、moduleで整理したいと思う場面がありました。 Railsで書いていることもあり、ActiveSupport::Concernにまとめる形にします、 moduleクラスに機能を混ぜ合わせることで複数のクラスで機能を共有する(Mix-in)という機能…

複数ファイル内の置換

複数ファイルを一度に置換したくて使っているコマンドです。 railsのroutes.rbを修正して、ルーティングヘルパが変わったので一斉に置換しました。 find . -type f -print0 | xargs -0 sed -i -e “s/info_salutation_path/salutation_path/ macOSの場合は、i…

tmux : unknown option: status-utf8というエラーメッセージ

warningがでていたので、tmux.confを更新した。 status-utf8 has been removed after version 2.2. ということで、setw -g status-utf8 on;を削除しましょう。 参考 https://github.com/tmux/tmux/issues/230