Rails

FactoryGirlのTraits知らんかったいいな

TraitsTraits allow you to group attributes together and then apply them to any factory. factory :user, aliases: [:author] factory :story do title "My awesome story" author trait :published do published true end trait :unpublished do publis…

Sunspot::Railsが提供するClassMethodsとInstanceMethods周り

後で絶対ハマると思ったので書いておく。Sunspot::Railsを使うとSunspot::Rails::Searchable::ClassMethodsとSunspot::Rails::Searchable::MethodsがActiveRecordにそれぞれextend,includeされる。Model.indexとModel#indexの動作が違い過ぎて結構びっくりし…

assets.compress = trueの時にスラッシュハック使ってるところがあると落ちる

プロパティの前に/(スラッシュ)を書いて行うハックでIE6,7のみに適応させる記法。 p { /font-size: 12px; } 多分こういう奴。precompileする時にcompressがtrueだと落ちるから別のハックにするとか対応が必要今回はアスタリスクハックを代替として使うことで…

ActiveModel::Dirty#attribute_wasを知らなかったので覚えた

古い値退避させておかなくてもええんやな! user = User.first user.name #=> "hoge" user.name = 'fuga' user.name #=> "fuga" user.name_was #=> "hoge"

全てのレコードを表したActiveRecord::Relationを得るにはscopedを使う

必要になる場面があったんだけど今まで知らなかったのでメモ Model.scoped.class #=> ActiveRecord::Relation # allだとArrayが得られるので以降にscopeが使えぬ Model.all.class #=> Array 参考リンク Rails で十分に活用されていなくてもったいない Active…

valid?をfalseにしたくてerrors.addするのは何の意味もない

RSpecでvalid? #=> falseを期待したくてerrors.addするみたいなことやってたんだけど ずっとtrueなのよ。もうなんなの!と思うじゃない そこで、valid?何やってるか見に行くじゃない。そしたらなんなの! activemodel-3.2.9/lib/active_model/validations.rb…

Deviseを継承したControllerのSpec

Deviseのカスタマイズがしたくて継承してController作ってSpecからリクエストしたら怒られたのです Failure/Error: get 'new' AbstractController::ActionNotFound: Could not find devise mapping for path "/users/sign_in". Maybe you forgot to wrap you…

RSpecでrender partialのテスト

describe 'GET "hoge"' do before do get :hoge end it { response.should render_template(partial: '_hoge') } end

Gemfileでのバージョン指定よくわからないやつ

公式のドキュメントに書いてあった http://gembundler.com/gemfile.html The specifier ~> has a special meaning, best shown by example. ~> 2.0.3 is identical to >= 2.0.3 and 2.1 is identical to >= 2.1 and 2.2.beta will match prerelease versions…

attr_accessibleのrole毎のテスト

Rails3.1からattr_accessibleにasでロールを指定できるようになっていますが、そこのテストModel # -*- coding: utf-8 -*- class User < ActiveRecord::Base attr_accessible :name attr_accessible :name, :active, as: :admin end 例えば管理者はユーザが…

ActiveAdminでのskip_before_filterの設定

下記参照 http://stackoverflow.com/questions/7591310/skip-before-filter-with-active-admin config/initializers/active_admin.rbにbefore_filterについての記述があるのでここに書く # == Controller Filters # # You can add before, after and around …

RSpec RailsのAnonymous controllerが便利

全てのcontrollerでこのbefore_filterを実行したいという時によく継承元のApplicationControllerで実施することがあります # -*- coding: utf-8 -*- class ApplicationController < ActionController::Base before_filter :check private def check redirect…

DeviseのLockable moduleについて少し調べた

DeviseはRailsで使用出来るユーザ認証プラグインです。 少しカスタマイズしようとすると面倒面倒という評判聞きませんが今のところまだ面倒な場面に出くわしていないので幸運のようです。 Deviseは12つのモジュールで構成されていますがその中のロック系の実…

ActiveAdminの0.5.0がリリースされていたので更新した

ActiveAdminのgithubをみたら0.5.0がリリースされていたので更新しました。 結構うれしいのはCHANGELOGのこの部分ですね。 All CSS is now encapsulated under the body.active_admin class. This may change the precedence of styles that you created to …

Twitter風なAjaxページネーションをKaminariで実現する

Twitter風と言っているのはMoreなリンクがある(かまたはオートページャライズ)でどんどん次のページの要素がたされていくようなページネーション。Kaminariでの実現方法なのだけどStackOverFlowに同じような質問をしている人がいて、それにKaminariの作者の…

Rails3でのAjax独自コールバック関数

jquery-ujsあたりにこの辺が定義されているので見ておくとよさそう ajax:beforeSend ajax:loading ajax:success ajax:error ajax:complete

Rails3.2でjQueryUIを使う為にやること/モーダルダイアログの使い方

モーダルダイアログが手軽に使えそうだったのでjQueryUIを試してみました。 インストール jquery-ui-railsというgemを使いました。 https://github.com/joliss/jquery-ui-rails Gemfile group :assets do # 略 gem 'jquery-ui-rails' # 追加 end JS/CSS/Imag…

KaminariのAjaxページネートが簡単すぎた

NEXTしたら要素がどんどん追加されてくようなのを作りたかったviews <div id="lists"> <%= render 'hoge' %> </div> <%= paginate @hoges, remote: true %>partial <ul> <% @hoges.each do |hoge| %> <li><%= hoge.name %></li> <% end %> </ul>js.erb $('#lists').append("<%= escape_javascript(ren…

ActiveAdminで遭遇したちょっとした事

ActiveAdminを使っていてなんか困ったことがあったらGoogle先生に頼む前に一旦issuesみてみるといいかもしれない。案外議論されてる Commentモデルが追加できない $ rails g active_admin:resource comment create app/admin/comments.rbエラーが出るように…

SunspotとActiveAdminを一緒に使う時は気をつけよう

SolrがバックエンドのRailsで利用できる全文検索ライブラリSunspotだがActiveAdminを使う時は注意。 何かというとActiveAdminにはMetasearchという全文検索ライブラリに依存していて一緒にインストールされるが 拡張の仕方が結構似てて下手すると競合するっ…

Rails3の管理画面プラグインActiveAdmin

管理画面プラグインのactive_adminについて軽く調べたのでそのまとめ Github https://github.com/gregbell/active_admin Doc http://activeadmin.info/documentation.html Demo http://demo.activeadmin.info/admin ドキュメントが整備されているのでドキュ…

Push Notificationのプロバイダ側のプラグインを変更した

Apns4rを使っていたけどフィードバックサービスのところの実装がまだ完成してなくて、自分でやろうとしたんだけどOpenSSL周りの仕組みよくわからなかったので実装されているプラグインを使うことにした。 jpoz/APNS · GitHub Githubのソースが最新。Gemでイ…

iPhoneでのPush Notification(プッシュ通知)の実装方法メモ

公式ドキュメント(日本語) https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf ※PDFファイル 参考リンク 実装/準備 http://iphone.longearth.net/2009/09/01/%E3%80%90iphone%E3%80%91push-notification%E3%81%…

Rails2系でGuard,Sporkを使ったBDDの自動実行環境を作る

Rails2系ではautospecを使ってやっていたけどGuardとSporkを使ったほうがいい気がしたので。 Install インストールする必要のある物、及びバージョンは下記サイトを参考に Ruby1.9.3 + Rails2.3.14 + rspec + guard + spork でテスト - 鶏肉がいいよね。 rsp…

Rails2でのautotestの設定メモ

環境 Rails2 RSpec 1.3.2(vendor/pluginsにいれた) RSpec-Rails 1.3.4(vendor/pluginsにいれた) Rcov 0.9.11 ZenTest 4.0.0 特に新しいことをやってるわけでもなく、環境のバージョン自体は古いので新しい環境(特にRails3系の場合)を構築するのには 全く役に…

factory_girlでのparent指定と関連の定義

今更factory_girl v1.3.3の話factory_girlでデータ定義していくときに少しだけ値が違うみたいな時は 継承してdefineできる #-*- coding: utf-8 -*- Factory.define :madoka do |f| f.first_name 'kaname' f.last_name 'madoka' end Factory.define(:homura, …

RSpecの実行を早くするためにSpork使ってみた

とても今更な話題だけどSporkつかってみた。実行速度が1/10くらいはやいはやい Install $ gem install spork Config ## spec_helper.rbにspork用の設定が足される $ spork rspec --bootstrapspec_helper.rb require 'rubygems' require 'spork' Spork.prefor…

RSpecでテストするときにfactory_girlを使う

fixturesが担っていたテストデータのところにfactory_girlを使うイメージ? 複数テーブルにまたがるデータを定義するときにfixturesより格段にやりやすいみたい。 その利点はまだ実感できてないけどとりあえず使い方 環境 Rails3,bundle全盛だけどRails2の話…

PostgresSQLでrake specするとNOTICEがいっぱいでる

NOTICE: CREATE TABLE will create implicit sequence "peroperos_id_seq" for serial column "peroperos.id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "peroperos_pkey" for table "peroperos" 〜略〜database.ymlに書いてあるけどm…

ExceptionNotifierでproduction環境のエラーをメールで通知

環境 Rails 2.3.2 Ruby 1.8.7 インストール # RAILS_ROOTで実行 $ ruby script/plugin install git://github.com/rails/exception_notification.git 設定 app/controllers/application_controller.rbに追記 include ExceptionNotification::Notifiable confi…