Rails

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

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

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 定義されるルー…

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

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

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=というメソッドが…

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

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

Yeomanのgenerator-angularとRailsの組み合わせでの開発環境構築

grunt-connect-proxyを使って、rails server と、grunt serve の2つを叩いてLiveReloadで開発出来るようにしようという話。 あとフロント側をビルドするとRailsのpublicディレクトリに静的ファイルとして配備するように。 RailsのAsset PipelineにAngularJS…

Deviseでnamespace使う場合はdevise_for :users, path: :adminとかしとけという話

メモ。 Devise使用時にroutesでadminとかのnamespaceにdevise_forを入れると,Devise::SessionsController等で authenticate_user! が authenticate_admin_user! とかなってしまう*1 # config/routes.rb namespace :admin do devise_for :users, controllers:…

Rails 4.0.4 から 4.1.0 に Update

こんな感じに作業。 ↓ https://github.com/katahirado/kkfoodstuff/commit/7aca5b2986e26e88a78d7d58bc041ed97cba5e9e https://github.com/katahirado/kkfoodstuff/commit/a0c49840145587336b52cb2d56ba71f1dda1e84c Warning: you should require 'minitest/…

nginxとunicornをOS Xで自動起動にする

このエントリーで書いたレシピ食材検索アプリですが、自宅ネットワーク内のMac miniで、nginx+unicornで稼働させています。 permissionや所有者ではまると面倒なので、nginxもunicornもユーザ権限で動かしてます。nginxはport 8080、unicornはport 5000にし…

RailsでMySQL InnoDBの全文検索機能とMeCabによる形態素解析を使って出来るだけ検索結果をヒットさせる

前のエントリーの通り、妻と自分用にレシピ検索アプリを作りました。 ソースコードはこちら。出来るだけ検索結果で、食材をいい感じでヒットさせるために色々やったので、記録しておきます。 あと、検索結果を出来るだけヒットさせることに、全文検索機能は…

妻と自分の為にRailsでレシピ食材検索アプリを作りました

https://github.com/katahirado/kkfoodstuff レシピの登録と、検索ができるだけのシンプルなWebアプリです。 あまり特別なことはしていないのですが、検索でしっかりヒットさせたかったので、MeCabによる形態素解析を使ってます。 あとMySQL InnoDBの全文検…

Rails + Adobe AIRでの業務システム

昨年末から4月末まで、 Rails(JSON+RubyAMF) + Adobe AIR(Flexベース,デスクトップアプリ)での業務システムな仕事をがっちりとやっておりました。Adobe AIRというと、今だとモバイル開発が主戦場で、WindowsやMac向けのデスクトップアプリとしては、世間一…

第28回 Rails勉強会@東北に参加

https://www.facebook.com/events/378705102216002/OzakiさんによるRails4.0ネタでした。 はじめにこちらのスライド。 https://speakerdeck.com/alindeman/rails-4-dot-0-whirlwind-tourその中から特にStrong ParametersとTurbolinksについては、スライド見…

第27回Rails勉強会@東北

https://www.facebook.com/events/295738007193281/参加してきました。参加者5名。今回もRailsCastsを手を動かして皆でやっていった感じです。 やったのは、Deviseなどの認証系ライブラリを使わず認証をスクラッチで作るやつです。認証↓ http://railscasts.…

第26回Rails勉強会@東北に参加してきました

https://www.facebook.com/events/153651131446402/ 参加してきました。参加者4名。MongoidのRailsCastsをやってみました。 http://railscasts.com/episodes/238-mongoid-revised ハマったところを箇条書き。 MongoidはRuby1.9.3 でしか動かない BigDecimal…

第25回 Rails勉強会@東北参加してきた

https://www.facebook.com/events/342159302538342/参加者4人。今回やった内容。 AngularJS — Superheroic JavaScript MVW Framework Backbone-Rails Asset Pipelineについて mailman RailsCastsみながらPolymorphic関連 やった内容の参照先については、こち…

Rails1.2.6のRailsアプリをRails3.2.8で作りなおしてデモサイトとして公開しました

公開したのは求人情報検索のデモサイトです。 Rails3.2.8 twitter-bootstrap-rails Capybara rspec-rails timecop SimpleCov EventCalendar 実装作業はid:CortYumingさんにお願いしました。進捗はRedmineで管理して、私がチケットを切って、CortYumingさんが…

rails generate migrationで規約で生成してくれるのはaddとremoveだけ

メモ。Rails3.2.7で確認。 rails generate migration AddTitleBodyToPost title:string body:text published:booleanこういうやつ↑ renameとかも対応してないかなと思って、念のためソースコード確認してみた。 #activerecord-3.2.7/lib/rails/generators/ac…

Capybaraとdatabase_cleaner

メモ。Capybaraでit "…", :js=>trueしてて、fixtureを使ってDBをどうこうする場合は、database_cleanerというgemを使うというのが定石っぽいですが。 1件削除とかちょっとした所で:js=>trueしたいだけだったので、削除のためのデータを、画面なぞって、フォ…

Capybaraのdrag_toを使ってドラッグアンドドロップのテストを書いたら動かなかったのでSeleniumのdrag_and_drop_byを使って書いた

Request SpecとCapybaraで、jQuery UI のSortableを使った並び替え部分のエンドツーエンドテストを書いていて、ハマったのでメモ。 Capybaraのドキュメントを見てみるとdrag_toというメソッドがあったので、これを使ってみたけど、ドラッグアンドドロップさ…

8/8オープンアワーresult

今日は、Linuxサーバの設定を修正したり、Railsのテストを書いたり、調べ物してました。

rvm-capistranoを使わずRVM使用のサーバにCapistranoでデプロイする

デプロイ先のRubyがRVMだと、そのままだとRubyをCapistranoが見つけてくれないので、うぐっとなります。しかし、デプロイする側のローカル環境でもRVMを使っている場合には、rvm-capistranoというgemをインストールして使うと、ちょこっと設定を付け足すだけ…

twitter-bootstrap-railsを使ったRailsアプリをサブディレクトリ運用のPassengerにデプロイしたらAsset Pipelineでハマった

twitter-bootstrap-railsは便利ですね。とてもナイスなわけですが、タイトルの通り、PassengerでRailsをサブディレクトリで配備してたら、Asset Pipelineでハマったのでメモ。 先にどうしたかだけ書いておくと、Webフォントでの表示はやめて、画像表示にしま…

Asset PipelineでController毎のJavaScriptを出力

Rails 3.1以降。 コントローラーを生成すると、app/assets/javascripts/controller_name.js.cofeeが生成されているけど、標準だと、production環境では、どのコントローラーのviewを表示しているかに関係なく、これが全部まとめられてapplication.jsになって…

CapistranoでのRailsデプロイでハマった場合の対処

config/deploy.rbを確認 capistranoが出しているエラーメッセージをよく見る。 ヘルプや公式のリファレンスをよく見る。cap --helpとか cap -Tしてみて、もっとプリミティブなタスクがないか確認してみる cap -e TASK_NAMEも確認してみる cap shellを使って…

rspec-railsをGemfileに追加するときにgroupに:developmentを忘れるとrake -Tに出てこず、rake specができなくなる

タイトル通り。rspec-railsだけ追加してた時は、:developementもついてたんですけど、timecopやcapybaraを追加したときにgroupのブロック内にまとめました。 その時にうっかり外してしまい、出てこなくて数分悩みました。 group :test do gem "rspec-rails",…

8/1朝活&オープンアワーresult

黙々と作業。 今日も、Railsのテスト周りを中心に。主にはRequest SpecとCapybaraを使用して、エンドツーエンドテストを書いてました。 他JavaScriptを少々、Railsアプリのリファクタリングを少々。以上。

7/31オープンアワーresult

今日は一人でした。 やったこと。 Rails3.2のアプリにRSpec2でテストを書いたり、テストまわりの色々を調べていました。以上。

テスト時の日付を固定する

Timecopを使いました。 describe "2012年7月31日だった場合" do before do Timecop.travel(Date.new(2012,7,31)) end it "4月以降なので 2013を返すこと" do helper.hogehoge.should == 2013 end after do Timecop.return end end お手軽。追記: @takaiさん…

Rails3.2で、RSpecを使ってhelperのテストを書いた場合

Rails3.2のヘルパーメソッドでcontent_tagなどで、タグを生成して返しているけど、メソッドの結果がエスケープされて、ActiveSupport::SafeBufferが返ってきてる。RSpecでテストを書いてみたんだけど、エスケープされてて、have_tagとかで出来ないから、itの…