2015-05-22から1日間の記事一覧

apartmentを使ってマルチテナントを実装する

井原(@ihara2525)です。 サブドメインでデータを分けたい(例えばhttps://bitjourney.slack.comみたいな)場合、RailscastsにあるMultitenancy with Scopesみたいに実現するのもありですが、その中でも参照されている、apartmentというgemを使うと、一つの…

RSpecでアップロードされたファイルをつくってテストする

井原(@ihara2525)です。 RSpecでアップロードされたファイルをつくってテストしたい、という場合、以下のようなファイルをshared contextとして作成し、必要な箇所でincludeして使うようにしています。 spec/support/shared_contexts/uploaded_file.rb inc…

CircleCI上でelasticsearch-extensionsを使ってテストを動かす

井原(@ihara2525)です。 elasticsearch-extensionsのTest::Clusterを使ってESのテストを書いているときに、ローカルの環境のまま動かそうとすると、 Starting 1 Elasticsearch nodes..sh: 1: elasticsearch: not found とelasticsearchコマンドが見つから…

複数のドメインを許可するemail属性のバリデーションを設定する

井原(@ihara2525)です。 サービスへのログイン時に、メールアドレスがexample.comかgmail.comなユーザなら許可する、みたいなことを、以下のように実装してみました。 ENV['USER_DOMAIN']には'example.com gmail.com'みたいにスペースで区切ったドメインの…

omniauth-google-oauth2でログインをGoogle Appsのアカウントに制限する

井原(@ihara2525)です。 omniauth-google-oauth2を使ってログイン機能を実装する際に、Google Appsの特定のドメインのユーザのみにログインを制限するので、アカウントを選ぶ画面を出して欲しくない、みたいな場合、以下のようにhdにドメインを指定してあ…

RSpecでElasticsearchを使ったテストを書く

井原(@ihara2525)です。 以下のようにElasticsearchを使って検索するアクションがあり、RSpecでこのコントローラスペックを書きたい!という場合にどうしようって話です。 class PostsController < ApplicationController def search @records = Post.sear…

RSpecでActionMailerのメソッドが呼び出されるテストを書く

井原(@ihara2525)です。 RSpecでActionMailerのdeliver_later!が呼び出されることをテストするコードを書いてみます。 コメントがあったときにメールで通知するサービスオブジェクトをつくり、それは中でActionMailerのdeliver_later!等を呼び出していると…

Capistrano 3によるデプロイをSlackに通知する

井原(@ihara2525)です。 今つくっているRailsアプリケーションのデプロイにはCapistrano 3を使っています。 slackistranoというgemを使うとデプロイの開始や終了を簡単にSlackに通知できるようになるのですが、終了の通知にgitの最後のコミットの内容とそ…