Rails+AngularJSのアプリをJasmineでテストする
概要
- Rails + AngularJS + Jasmine + CoffeeScript
- Rails + AngularJSはこちら: Rails単体でAngularJSとTwitterBootStrapを組み合わせた環境構築 - Qiita
- Jasmineさいつよ
参考資料
- 以下の2つを組み合わせる
手順
jasmine-railsのインストール
- ここは参考資料通り
# Gemfile group :development, :test do gem 'jasmine-rails' end
で
bundle install
rails g jasmine_rails:install
したら一式インストール完了- 楽ちんすぎてばかになりそうだ
angular-mocksのインストール
- Jasmineでテストしようとすると、
angular-mocks
が必要になる。 - 入ってないとこれ以降の手順で以下のエラーが出る。
ReferenceError: module is not defined
- application.jsでrequireする
- なんらかの手段でangular-mocksのパッケージは入れておくこと
//= require angular-mocks
実際のテスト
- 先のjasmine-railsのインストールで、テスト用のページは作られているのでSpecRunner.htmlなどは不要で、そのままテストを書けばよい。
describe "HogesController", -> beforeEach -> module('myApp') beforeEach -> inject ($controller, $rootScope, Hoge) -> @scope = $rootScope.$new() @ctrl = $controller("HogeController", { $scope: @scope }) spyOn(Hoge, "query").and.callFake -> return [] it "search()", -> @scope.search() expect(@scope.hoges).toEqual([])
myApp
にHoge
サービスと、HogesController
が定義されており、HogesController
のsearch()
をテストすることとする。最初のbeforeEachでmoduleを準備する。
- 次のbeforeEachで
@scope
とテスト対象のコントローラを定義する。- ついでに
Hoge
サービスのquery()
で返ってくる値をspyOn
で代役を立てておく。これで実際に通信しにいくことはない。 spyOn
はJasmineのSpy機能の1つ
- ついでに
- itでテストを行う。
HogesController
でsearch()
が実行された後、scopeのhoges
にHoge
サービスのquery()
の戻り値が入っていることを期待する。
ひとりプログラミング合宿へ
突発的なここではないどこかへ欲
どこかで1人合宿したいなあ
— ルニ (@lni_T) 2015, 8月 23
そして合宿へ
計画
リリースやインターンシップのや炎上案件が重なり、取得できていなかった夏季休暇があったので今週取得して合宿へ。
特に場所の希望はなかったのでざっくりと決めていく
- 近場or遠出
- →あまり遠いと移動で合宿の体力が尽きるので関東近郊で
- 海or山
- ここは直感で海へ
ここまでくるとある程度しぼれる
- 千葉or神奈川
- 神奈川は来週別の用事で行くので違う場所へ行こうということで千葉へ
というわけで千葉に行くことに…
事前調査
- とりあえずるるぶで下調べ
- が特に行きたい場所なし
- というわけで適当に宿とって温泉はいってもくもくしましょう
- るるぶトラベルで宿探して予約
決行
- というわけで高速バスで1時間ほど揺られて木更津へ
- 到着しての感想
- 「田舎だ…」「駅前に人がいねえ…」「何もない…」
- 人が居ないので落ち着いて合宿できそうです。
- ひとまず宿のチェックインが16時なので喫茶店で時間つぶしがてら目標の記載を行う。
合宿の目標
- という訳で目標設定
スケジュール
- 14:00 目標設定
- 15:00 下調べ
- 15:45 ホテル移動
- 16:00 ホテルチェックイン
- 16:15 第一次もくもくタイム
- 18:00 近場の温泉へ(大浴場付きのホテルの予約が取れなかった)&晩飯
- 19:45 ホテル戻る
- 20:00 第二次もくもくタイム
- 21:30 休憩
- 22:00 第三次もくもくタイム
- 23:30 休憩
- 24:00 第四次もくもくタイム(眠気が来るまで)
実施内容
- もくもくと何か
意気込み
- 進捗出すぞー
本当の旅の目的
【悲報】ワイ将 ついに部屋にGの侵入を許す
— ルニ (@lni_T) 2015, 8月 23
敵をロスト!!!(家爆破したい)
— ルニ (@lni_T) 2015, 8月 23
おわあああああああ見つからねーーーーーーー
— ルニ (@lni_T) 2015, 8月 23
引っ越すか
— ルニ (@lni_T) 2015, 8月 23
Rails4でActiveAdminを使う備忘録
Railsで管理画面を作るのに使ったActiveAdminの備忘録
基本
↓に従って進める github.com
手順
導入
- Gemfileに記載してbundle install
gem 'activeadmin', github: 'activeadmin' gem 'devise'
- rails gで各種生成
$ rails g active_admin:install
- 特に何もしていしなければAdminUserというdeviseを使ってログインできるユーザーが作成される
- 日本語化したければしておく
- 試しにログインするとかっこいい管理画面が表示される。
モデルを操作対象に
- 対象のモデルに対して以下のようにrails generate
rails g active_admin:resource ModelName
- これで画面に表示されるが、まだ編集はできない。
- アソシエーション系も勝手に表示される!スゴイ!
app/admin/model_name.rb
で操作可能な属性を指定する- belongs_toは :hogehoge_idを指定すると操作可能になる。
追記 全属性を操作可能にする
config/initializer/active_admin.rb
に以下を追加。
ActiveAdmin::ResourceController.class_eval do # Allow ActiveAdmin admins to freely mass-assign when using strong_parameters def resource_params [(params[resource_request_name] || params[resource_instance_name]).try(:permit!) || {}] end end
スプラトゥーン装備検索システム「IkaDB!」 リリースしました
IkaDB!
概要
- スプラトゥーンのブキ・ギアの詳細検索ができるWebアプリです。
- いちいちWikiを漁らなくても検索クエリを入力するだけで合致するブキ・ギアを発見できます。
経緯
スプラトゥーン寝不足おじさん
— ルニ (@lni_T) 2015, 6月 9
- というわけでスプラトゥーン系で何か作ると健康で楽しくなれそうだったので
結果
- 楽しかった
- 楽しくなりすぎて寝不足で倒れて会社休みました
結論
- 徹夜プログラミングはほどほどに
RailsアプリへのGoogle Analyticsの導入手順
導入自体はかなり簡単だったのでさっくりまとめ
手順
トラッキングID発行
- http://www.google.com/intl/ja_jp/analytics/ にアクセス
- Googleアカウントでログイン
- 申し込みフォームがあるので申し込み
- WebアプリのURLや名前を埋めて申し込む。
- 既にサイトを作ってデプロイしておく必要がある。
- トラッキングIDが発行される。
タグ埋め込み
- google-analytics-railsというgemを使うのが楽なのでこれをGemfileに記載する。
gem 'google-analytics-rails'
- トラッキングIDを設定値に記載する。
# config/environments/production.rb # トラッキングIDを記載 GA.tracker = "UA-xxxxxx-x"
app/views/layout/application.html.haml
のhead内にタグ挿入処理を記載する。
= analytics_init if Rails.env.production?
- できあがったらデプロイする。
動作確認
- トラッキング組み込み確認
- Google Analyticsの「アナリティクス設定」の「トラッキング情報」にステータスが表示されるが、そこが
ステータス: トラッキングがインストールされています
になっていれば設置完了。
- Google Analyticsの「アナリティクス設定」の「トラッキング情報」にステータスが表示されるが、そこが
- レポート確認
- GoogleAnalyticsの「レポート」から状況が確認できる。「リアルタイム」のレポートはアクセス内容がほぼ即時反映されるので、サイトにアクセス後このレポートにアクセス結果が反映されればOK。
CentOS6.2でBitBucketのリモートリポジトリを使用する
CentOSからBitBucketのリモートリポジトリにfetchしようとして、ちょっとハマった所をメモ
基本手順
下記のURL通りに進めればできる 公式手順(和訳) http://confluence.atlassian.jp/pages/viewpage.action?pageId=35095517
ハマった所1 アクセス権がない - Permission denied (publickey).
現象
そもそも認証できない
$ ssh bitbucket.org
を実行して上記のエラーが出る
解決方法
CentOSでは起動後にssh-addしないと鍵を使ってくれない
$ ssh-agent $ ssh-add [秘密鍵ファイル指定]
すると鍵を使ってくれる
ssh接続後以下のメッセージが返ってくれば認証OK
logged in as ******. You can use git or hg to connect to Bitbucket. Shell access is disabled. Connection to bitbucket.org closed.
ハマった所2 - gitリポジトリにSSH認証できない
現象
いざgit fetchやgit pushしようとした時にパスワードを求められる
解決方法
gitの設定をHTTPS -> SSHに変更する [リポジトリ]/.git/config にあるリポジトリのconfigを確認し url = https://username@bitbucket.org/username/reponame.git のようにパスがHTTPSになっていた場合 url = git@bitbucket.org:username/hellobitbucket.git とSSHアクセス用のパスに変更する
これで認証可能
その他
より初心者向けの解説 http://morizyun.github.io/blog/ssh-key-bitbucket-github/ http://sseze.hatenablog.com/entry/2013/01/03/155711