個人事業主11年目

8月頭で。 10年続けられた、なのか、10年しかなのか。

近況

第一回Kakyoin.rb

8月9日 14時から、Kakyoin.rbの一回目のMeetupを片平堂で行います。 内容は、特に決めておらず、集まった人たちでRubyに関する何かをやります。 なお、参加希望は受け付けていません。 事前に声がけした近隣のRubyistの皆様で一杯になってしまったので。 片…

AngularJSの$httpや$resourceでのリクエストにAuthorizationヘッダーでの認証を付加する

個別のリクエストではなくインターセプターを使ってまとめて追加。 インターセプターを作って$httpProvider.interceptors配列に追加するだけ。 下記コードは、サーバからのtokenを取得済みなら、Authorizationヘッダーに追加してリクエストするようになる例…

One-time bindingと$resourceで気をつけること

前提 AngularJS1.3からOne-time bindingという最初の一回だけバインディングする仕組みが入った。 $resourceはpromiseではなく、先に空配列を返す。 問題 なので、下記のようにngRepeatをOne-time bindingにすると、空配列評価されて、何も表示されなくなっ…

近況

生存報告

OS X YosemiteにアップデートしたらHomebrewでインストールして自動起動設定にしていたnginxのサイトにアクセスできなくなった

mac

こういう設定で家庭内で食材検索のWebアプリを動かしていたが、動作させていたMac miniをYosemiteにアップデートしたらアプリのサイトにアクセスできなくなってしまった。 で、調べようとする過程でbrew doctorしようとしたらbrewコマンドも使えなくなってた…

AngularJSで$templateCacheを使ってまとめたテンプレートJSの中のCSSファイルや画像ファイルのリンクにhashをつける

grunt-filerevを使って、CSSファイルや画像ファイルにhashがbuild時につくようにしている場合に、grunt-angular-templatesを使う場合はどうするか generator-angularで作ったAngularJSプロジェクトのbuildタスクではgrunt-useminの処理中、grunt-filerevの処…

AngularJSで$templateCacheを使っている場合のテスト環境

ちなみにgenerator-angularで作成したプロジェクト。 developmentやbuildではgrunt-angular-templatesを使っているが、テストには、karma-ng-html2js-preprocessorを使った。 インストール % npm install karma-ng-html2js-preprocessor --save-dev karma.co…

AngularJSのカステムディレクティブで別のディレクティブをrequireしている場合のテストの書き方

前の記事のでいえばchildItemディレクティブのテストの書き方 コード再掲 #parentChild.coffee "use strict" #parent #controller angular.module("myApp") .controller("ParentItemCtrl", ($scope, Child) -> #....... @removeChildItem = (childId, index)…

AngularJSを1.2系から1.3.0にあげたらrequireした親のコントローラを使っているdirectiveでエラーが出た

コードはこんな "use strict" #parent #controller angular.module("myApp") .controller("ParentItemCtrl", ($scope,Child) -> #....... coffeeなので自動で波括弧をつけてくれるが明示的につけておいた ............ { removeChildItem: (childId, index)-…

RailsでPunditとshoulda-matchersを併用して、Rspecのcustom matchersが被った

Punditとshoulda-matchersにはpermitという同名のカスタムマッチャーがあって、衝突してしまう。 ので、punditのpermitは、spec_helper.rbでのrequire "pundit/rspec"をやめて、punditのカスタムマッチャーのpermitを使いたい個別のspecファイル、例えばuser…

AngularJSでネストしたコントローラをテストする

前提 AngularJSでコントローラをネストして階層化すると、子コントローラ側から親コントローラのスコープを利用可能になる。 問題 子コントローラのユニットテストを書こうとした場合に、子コントローラ側で親コントローラのプロパティやメソッドを使用して…

AngularJSのフォームで投稿後に再利用する際手付かずの状態に戻したい

例えば記事へのコメント投稿後に、そのフォームを再利用する際に、データを初期化しただけだとエラー表示が出てしまう。 ので、$dirtyがfalse($pristineがtrue)の状態に戻したい。 いわゆるブログのコメント投稿とかのよくあるやつ。 form.FormControllerの$…

RailsのResourcesでNestしてshallow: trueしたresourcesをAngularJSの$resourceで扱う

例えばこういう感じのresourcesを定義したとする。 APIの例。newとeditは省いた。 # routes.rb namespace :api, defaults: { format: :json } do resources :reports, shallow: true do resources :comments, except: [:new, :edit] end end 定義されるルー…

AngularJSで$sceを使ってるフィルタなんかのテスト

$sceをDIしてるやつ、例えばこちらのようなののテストを書く場合。 # newlines_spec.coffee "use strict" describe "Filter: newlines", -> beforeEach module "myApp" newlines = {} beforeEach inject ($filter) -> newlines = $filter "newlines" it "\nを<br />…

RailsでつくるAPIサーバのドキュメントを自動生成してくれるAutodocを使っていて気をつけること

Autodocとはなんぞやという方はこちらの記事を参照。 公式はこちら で、大変便利なAutodocだけど、注意点が2つ。 まず一点目はRspc3で動かない点。プルリクが上がってるが、取り込まれてない。 なので、forkして使ってる人が結構いる感じ。 2点目、通信が…

AngularJSのProtractorでngMockE2Eの$httpBackentを使ってテストを書く際に気をつけること

まだ理解が浅い模様。 注意というかexpectとwhenの違いの話。 前提 AngularJSにはngMockE2EというE2E用のモックが用意されており、こちらを使用することにより、サーバを用意しなくてもモックでテストが書ける。 * ngMockE2Eの$httpBackendにはngMockの$http…

AngularJSでInterceptorでHeaderを付与するようなケースのテスト

例えば$httpのリクエストをインターセプトして、Authorizationヘッダーにトークンを付与するInterceptorを作成したとする。 この場合、このInterceptorのサービスをどのようにテストするのがよいのか? で、調べたら大変素晴らしい記事があったのでそちらを…

UI-Bootstrapのmodalのテストで、$modalInstanceを使うControllerをテストしようとして、$modalInstanceをinjectしようとするところでUnknown providerとエラーが出る

公式のサンプルでいうと、ModalInstanceCtrl部分のテスト。 // modal-demo.js var ModalDemoCtrl = function ($scope, $modal, $log) { $scope.items = ['item1', 'item2', 'item3']; $scope.open = function (size) { var modalInstance = $modal.open({ te…

Rails4をJSON APIとして構築していてCreateのAPIに関連のID一覧をparameterとしてPOSTしてはまった

前提 1.Railsのwrap_parametersはJSONをRailsへ送った時にルート要素を省いてくれる。というか、省いて送ってもよしなにwrapしてくれる。 Railsのwrap_parametersは何をしてくれるのか? 2.has_manyを定義するとrelation_ids,relation_ids=というメソッドが…

grunt-wiredep使用の環境でjquery-uiのdatepickerのロケールとCSSを含みたい

grunt-wiredep使用の環境でAngularJSのui-dateでロケール指定したい&jquery-uiのCSSを当てたいと。 bower.jsonに追加してbower install bower.json { "dependencies": { "angular-ui-date": "latest" } } ui-dateがjquery-uiに依存しているので、jquery-ui…

grunt-wiredep使用の環境でmomentの日本語ロケールファイルを含めたい

より正確にいうとgrunt-wiredep使用の環境でangular-momentでロケール指定したい、ということ。 angular-momentをインストールする % bower install angular-moment --save これでmomentも依存関係でインストールされて、wiredepで差し込まれてめでたしめで…

ProtractorでngMockE2Eを読み込んでモックを使ってテストしている場合、build時にはngMockE2Eを除外したい

yeomanのgenerator-angularで作ったプロジェクトで、grunt-wiredepを使っているので、素直にE2Eテストでangular-mocksを使おうとすると、bower.jsonのdevDependenciesからdependenciesに移す必要がある。 // bower.json { "name": "MyApp", "version": "0.0.…

grunt-wiredep使用の環境でangular-i18nをbowerでインストールしたら注入できないとメッセージ

AngularJSリファレンス購入して読了。これは良い本。 で、フィルタのi18nの項をみて、早速いれてみたら、grunt-wiredepを使っているGruntのタスクで注入出来ないとメッセージが出て、htmlファイルのコメントの間にi18nへのscriptタグが挿入されない。 ちなみ…

Rails 4.1でhas_many :throughのuniq: trueはなくなってた

activerecord - Deprecation warning when using has_many :through :uniq in Rails 4 - Stack Overflow

Vagrant環境下でのgrunt watchでファイル監視の反映に時間がかかるので、webstormの自動保存を無効にした

↓ こちらのとおりです。 WebStorm/PhpStorm メモ - 自動保存を停止したい - {u:b} うーん、あまり変わらない気がする。別のところに原因がありそう。

Vagrant環境でload-grunt-taskを使ったGruntのtaskが遅いのでjit-gruntに変えた

インストール % npm install jit-grunt -D % npm uninstall load-grunt-tasks -D jit-gruntを使うようにGruntfile.coffeeを書き換え。 後、watchにspawn: falseも追加しといた。 #Gruntfile.coffee module.exports = (grunt) -> # Load grunt tasks automati…

deprecatedが出ていたngminからng-annotateへ切り替え

AngularJSのminify対策をしてくれるアレ。 例によって、generator-angularで作ったプロジェクトでの話。 grunt-ng-annotateをインストールしてgrunt-ngminを外して、記述をngminからngAnnotateにしただけでいけました。 % npm install grunt-ng-annotate -D …

CoffeeScriptでAngularJSのテスト書いている時に暗黙的に最後の行を returnする仕様に気をつける

まんまこれ↓ CoffeeScript で AngularJS のテストを書くときに気をつけること - Qiita 'use strict' describe 'Service: AwesomeInterceptor', -> httpProvider = {} # load the service's module beforeEach module 'myApp',($httpProvider)-> httpProvider…