SequelでFactoryGirlを使うとき
FactoryGirl.createは最終的にsave!メソッドが呼び出されるけれど、
Sequelにはsave!はなくsaveしかないのでそれを使うようにFactoryGirl側に教えなければならない。
こんな感じのエラーが出るので
Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `save!' for #<User:0x007fb3dc3d6980>
こうする。
# spec/factories.rb FactoryGirl.define do to_create { |instance| instance.save } end
参考:
2つの配列の重複要素を抽出する
社内レビューで教えてもらったのでメモ。
a = [1,2,3,4,5,6,7,8,9,10] b = [ 2,3, 5, 7, 11,12,13,14] p a & b #=> [2, 3, 5, 7]
Array#&を使うと簡単だった。
ちなみに最初に僕が書いたのは2つの配列をeachで回して(以下略
autotest gem 使ってみた
見ました。
テストしたらそれがドキュメントになるの素晴らしいとおもいます。
で、触ってみてのメモ。
バージョンは0.3.2。
テストで作ったもの
https://github.com/rightgo09/ruby-autodoc-test
active_support/concernが必要?
✘╹◡╹✘ AUTODOC=1 bundle exec rspec /Users/rightgo09/sandbox/autodoc-test/vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.2/lib/action_dispatch/http/mime_negotiation.rb:6:in `<module:MimeNegotiation>': uninitialized constant ActiveSupport::Concern (NameError)
エラーでた。
ので、spec_helperに
require "active_support/concern"
を追加した。
JSON
JSONを返すとき(Content Typeが"application/json")は、
require "json"
が必要。
アプリ側でどっかで使っていればそれでいいけど、Ojとか別のパーサ使ってたらspec_helperとかで読み込む必要あった。
spec/requests/*_spec.rb
spec/api/root_spec.rbのテストにautodoc:1してみると
* doc/spec/api/root_spec.rb
ができる。中身はMarkdown。
READMEのexampleのとおり、spec/requests/*にテストファイルを置くと、doc/*.mdになってくれる。
Markdown以外のフォーマット
Autodoc.configuration.template = File.read("/my/template/path")
templateにファイルパスを入れるかと思ったけど、中身を渡す必要があった。
ERBの普通のHTML書いて渡せば、別にGithub経由とかじゃなくてもブラウザで簡単に見られる。