retrofit
公式: http://square.github.io/retrofit/
以前に
っていうかインターフェース定義してアノテーションつけてみたいな事して、Webクライアントのクラスとなるソースを生成するの作れば良いんじゃないの
— kinjouj (@kinjou__j) 2015, 6月 12
っていうように単純なデータのやりとりだけなのであればそういうのがあれば良いんじゃねって思ってたんですが、ソースとかを生成したりはしない(はずだ)けど、retrofitっていうのがあるみたいで使ってみた
ActiveRecord Validation #5 - Common Validation Options/Strict Validation -
公式ドキュメント: http://guides.rubyonrails.org/active_record_validations.html#common-validation-options
引き続きドキュメント読みながらやってみようって事で進めてみる
ActiveRecord Validation #4 - validates_each -
公式ドキュメント: http://guides.rubyonrails.org/active_record_validations.html#validates-each
validates_withではレコード単位でバリデーションによる検証処理を別クラス等にまかせるような仕組みだと思うけど、validates_eachは指定した属性に対する検証処理をブロックにまかせるような検証仕組みを提供する物かと
ActiveRecord Validation #3 - validates_with -
公式ドキュメント: http://guides.rubyonrails.org/active_record_validations.html#validates-with
ActiveModel::Validatorを用いて検証処理を実装する方法を提供するヘルパー的な感じなのではと
ActiveRecord Validation #1
公式ドキュメント: http://guides.rubyonrails.org/active_record_validations.html
公式ドキュメントを読みつつ進めてみようかと。ただやたらと長いので何回かに分けて書く予定
ActiveRecordのpolymorphic
公式ドキュメント(Guide): http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
公式ドキュメントの日本語翻訳: [ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active Record Associations][1]
ちょいちょい公式ドキュメントをざっくり見ながらやってみてる。今回はActiveRecordのpolymorphic association
ActiveRecord Optimistic Locking
参考: http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html
Rails(っていうかActiveRecord)での楽観的ロックを使う場合のドキュメント見ながらやってみた
とりあえず実検証でのアプリケーションを作る必要があるので(ry
Capybaraで複数のセッションを使う
前回のActiveRecord Optimistic Lockingのような同一のページのインスタンスを持つセッションが複数あり、一方のセッションで処理した後で他のセッションで処理するとエラーになるっていう振る舞いをテストするにはどうしたら良いのかっていう件
という事でやってみた
rails generateでFactoryGirl Fixtures
※Gemfileでenvironmentにおける依存性で:developmentを指定していればこういう設定しなくても良い模様
Railsのconcernsについて
モデルやらコントローラーでmixinすることで定義を分割するような仕組みみたいなのらしい。要はコントローラーやらモデルやらにずらーっと定義しなくてもconcernsに定義をする事でinlcudeして利用できる
rails g migration
よくジェネレータ(scaffold)を使わずにapp/modelsとかに直書きしちゃうケースもあるのですが、そういう場合のモデルに対応するマイグレーションを利用する場合
OmniAuthを使ってfacebookログインする
公式: https://github.com/intridea/omniauth
タイトル通りRails(じゃなくても出来る。Sinatraとかもサポートされている)で、facebookへのログインを行ってアカウント情報なりを利用するようなパターン(ソーシャルログインなり登録時の情報の自動設定なり)を行う場合には、omniauthでサポートされているfacebook strategyを使えば簡単にできちゃう模様
angular.jsをやってみる (24) - ng-non-bindable -
参考: AngularJSとサーバーサイドテンプレートの混在とngNonBindable
※上記の参考を必読することをオススメ
上記参考にも書いてるのですが、例えばクエリーなどにおいてangular.jsが処理されるような記法なクエリーが含まれているとXSSになるっていう話があるのですが、実際自分でやってみた。
※実検証はRails4を使ってやった
rubygemsサーバーを作る
以前にやったRails assets pipelineではパスを指定してパッケージ的なのを読み込んでたんだけれどもRubyGemsで参照できるサーバーを用意、つまりはrubygems.org的ながあれば良いよねっていう事で参考を読みつつやってみた
Rails assets pipeline
何やらRailsを使っててJavaScriptとかをgemとかで配布してRailsプロジェクトに組み込んだりするっていうのがあったりするわけで。例えばTwitter BootstrapのCSSとかJSとかをGemfileにそういうgemを定義する事でサクッと出来るっつー訳。でその仕組み的なのがRails assets pipelineっていうのかなと、これCoffeeScriptとかならコンパイルして使えるようにする事も出来るらしいとの事(今回はやらないけど)
とりあえずこの仕組みを使ってangular.jsなプロジェクトを別にしてRailsプロジェクトに組み込むっていう事をしてみる
FactoryGirlを使ってみる
何やら色々Railsな情報を見てるとFactoryGirlっていうのがやたらと目に入ってくるので調べたりしつつちょっと使ってみた。単純に言うとテストで使用するフィクスチャを作成出来る物な模様
rspec-railsのドキュメント読み
以前から何度かはRailsとRSpecに関する事書いてるけど、ちゃんとドキュメント読みましょうって事で、 https://www.relishapp.com/rspec/rspec-rails/docs を読み進めてみる
doorkeeperでプロテクトされているコントローラーのテスト
RailsでAPIなコントローラーをテストしようにもbefore_filterでトークンによるプロテクションがされているのが当たり前。それをテストする際にどうやるのかって所なんですが、普通にドキュメントに書かれてる
https://github.com/applicake/doorkeeper/wiki/Testing-protected-controllers
doorkeeperのgrant_type="password"を使ってみる
参考: https://github.com/applicake/doorkeeper/wiki/Using-Resource-Owner-Password-Credentials-flow
な感じですね。で前回のAndroid(AccountManager+SyncAdapter)+RubyOnRails(doorkeeper)にユーザー認証というか認証機構をdeviseを導入して色々修正。でどうやってアクセストークン取るかって所で上記のgrant_type="password"が使えると。curlとかでやると
Rails(OAuth)+Android SyncAdapter
今まで書いたAccountManager及びSyncAdapterなやつは認証トークンを適当に作ってそれを利用してAPIにリクエストを投げるという方式だったのですが、そのサーバー側の問題が色々あるのでそこら辺をRailsで組み直し、Android AccountManager+SyncAdapterではOAuthを使ってAPIリクエストを行う方式というのを採用してみた。要は
RubyOnRailsでformatルーティングを無効にする方法
App::Application.routes.draw do
resources :entry do
match "search/:query", :action => :search, :on => :collection
end
end
みたいなルーティング定義をすると
- /entry/search/:query(.:format) entry#search
なルーティング定義になる。だけどこの:formatは要らんって思った場合どうすればいいのかって調べてみたら、:format => falseを渡せば良いらしい
RubyOnRailsの標準テストをやってみる
標準テストなのかどうかは定かじゃないのですが、RSpecじゃなくてActiveSupport::TestCase/ActionController::TestCaseとかを使って単体テストとかやってみた。あくまで「どう使うのか」っていうのがポイントなんでコード上は特に意味の無い内容になってますんで
ちなみにベースは某イベントで開催されたRailsなLTの物をベースとされたのを参加者が自身で起こした物な模様
Rails3+RSpecでのテストを勉強してみる (5) - Spork+Headless -
HeadlessでXvfbを使ってcapybara-webkitなテストとかも出来る模様。んでsporkが良い感じらしいっていうのを聞いたのでとりあえずやってみた
Rails3+RSpecでのテストを勉強してみる (3) - capybara-webkitを使ってみる -
capybara-webkitを使ってJavaScriptの機能をテスト出来る模様なので色々調べつつやってみた
Rails3+RSpecでのテストを勉強してみる (2) - RSpecでのコードカバレッジ -
そういうライブラリとかあんのかなーって色々見てたら、rcovっていうのがあるけどRuby1.9.xで動かないよな模様なのでsimplecovっていうのを使えば良いらしい。んでrcovなフォーマットで動かす場合にはsimplecov-rcovっていうのも使えば良いらしい
Rails3+RSpecでのテストを勉強してみる (1)
ちょっと要件があり勉強する必要があったので色々勉強してみた。一応、Rails自体5年ぶりだし、RSpecなんて今回初めて使ったレベルなので