カテゴリー : Ruby

[Ruby] count、size、length の違い

Ruby の count、size、length の違いについて理解するにはこの辺を読む。

count、size、lengthの違い(再考) – うんたらかんたらRuby – Rubyist はてなブックマーク - count、size、lengthの違い(再考) - うんたらかんたらRuby - Rubyist

Rubyのsize/length/countの違いは? – QA@IT はてなブックマーク - Rubyのsize/length/countの違いは? - QA@IT

【Rails】sizeとcountとlengthについて – ゆっくりブログ はてなブックマーク - 【Rails】sizeとcountとlengthについて - ゆっくりブログ

[Ruby] Rspec 入門記事まとめ

Ruby のテストフレームワーク「RSpec」を入門する上で参考になった記事をまとめてみました。

RSpec.info: home はてなブックマーク - RSpec.info: home

Rubyist Magazine – スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編) はてなブックマーク - Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

Rubyist Magazine – スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編) はてなブックマーク - Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編)

Rubyist Magazine – 改めて学ぶ RSpec はてなブックマーク - Rubyist Magazine - 改めて学ぶ RSpec

RSpecによるユニットテストの書き方 – tech.recompile.net はてなブックマーク - RSpecによるユニットテストの書き方 - tech.recompile.net

Twiwt:Blog / jugyo : spork でサクサク RSpec on Rails3 はてなブックマーク - Twiwt:Blog / jugyo : spork でサクサク RSpec on Rails3

RSpecでRailsのテストをしてみるテスト。 | Ginpen.com はてなブックマーク - RSpecでRailsのテストをしてみるテスト。 | Ginpen.com

RSpecでテストコードを書いたまとめ – (゚∀゚)o彡 sasata299’s blog はてなブックマーク - RSpecでテストコードを書いたまとめ - (゚∀゚)o彡 sasata299's blog

私はRSpecでテストをこんな感じで書いてる – アジャイルSEを目指すブログ はてなブックマーク - 私はRSpecでテストをこんな感じで書いてる - アジャイルSEを目指すブログ

RSpec で View のテスト

ビューをRSpecでテストする際の覚え書き – MothProgのうしろがわ はてなブックマーク - ビューをRSpecでテストする際の覚え書き - MothProgのうしろがわ

aRailsDemo | #37 RSpec – Views Part 1 はてなブックマーク - aRailsDemo | #37 RSpec - Views Part 1

RSpec で Request のテスト

ASCIIcasts – “Episode 257 – request specとCapybara” はてなブックマーク - ASCIIcasts - “Episode 257 - request specとCapybara”

RSpec の構文

Start! Ruby – RSpecの構文 はてなブックマーク - Start! Ruby - RSpecの構文

contain, have_selector, have_xpath などの利用例

wincent.com: Webrat matchers はてなブックマーク - wincent.com: Webrat matchers

RSpec の便利な設定など

最近話題のRSpecのプレゼンの中で知らなかったこと – takihiroの日記 はてなブックマーク - 最近話題のRSpecのプレゼンの中で知らなかったこと - takihiroの日記

Devise でのテスト

How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki はてなブックマーク - How To: Controllers and Views tests with Rails 3 (and rspec) · plataformatec/devise Wiki

RSpecのドキュメント

Publisher: RSpec – Relish はてなブックマーク - Publisher: RSpec - Relish

とりあえず、以上。

[RSpec] stub(スタブ)と mock(モック)の違い

RSpec の stub(スタブ)と mock(モック)の違いについて調べたので、参考になったサイトをメモ。

とりあえず、以上です。

[Ruby on Rails] Devise の current_user メソッドをオーバーライド

Ruby on Rails にて、Devise の current_user メソッドをオーバーライドする方法をメモ。

常にユーザの権限(Role)もまとめて取得する場合は、こんな感じに書く。

# app/controllers/application_controller.rb 
class ApplicationController < ActionController::Base
  alias_method :devise_current_user, :current_user
  def current_user
    if devise_current_user.nil?
      nil
    else
      User.find_by_id(devise_current_user.id, include: :role)
    end
  end
end

【参考】ruby on rails 3 – Where to override current_user helper method of devise gem – Stack Overflow はてなブックマーク - ruby on rails 3 - Where to override current_user helper method of devise gem - Stack Overflow

[Ruby][FactoryGirl] Could not find a valid mapping for #<User

Ruby on Rails のプロジェクトにて、rake タスクに FactoryGirl 経由で Devise の user を作成したら、エラー出て死んだ。

■ エラーメッセージ

Could not find a valid mapping for #<User

そして、rake も rails s も rails c も何もできなくなった。

とりあえず、rvm 使っていたので、gemset を作り直すことで rake や rails s などは実行できるようになった。

しかし、User登録については、まだ解決できてない。ダレカタスケテ

【参考】

Reloading Factory Girl Factories in the Rails 3 Console | Transcending Frontiers はてなブックマーク - Reloading Factory Girl Factories in the Rails 3 Console | Transcending Frontiers

devise – “Could not find a valid mapping for #” only on second and successive tests – Stack Overflow はてなブックマーク - devise - ” only on second and successive tests – Stack Overflow” border=”0″ />

[Ruby][RVM] mysql2.bundle: [BUG] Segmentation fault

Ruby on Rails のプロジェクトにて rvm の gemset を再作成(delete → create)後に bundle install して gem をインストールしてから rails s したら abort した問題を解決した話をご紹介します。

続きを読む

[Rails][FactoryGirl] エラー:Factory already registered: xxx

Ruby on Railsにて、

Factory already registered: xxx

lib/tasks/

require 'factory_girl'
Dir[Rails.root.join('spec/factories/*.rb')].each {|f| require f }

【参考】ruby on rails – Factory already registered: user (FactoryGirl::DuplicateDefinitionError) – Stack Overflow はてなブックマーク - ruby on rails - Factory already registered: user (FactoryGirl::DuplicateDefinitionError) - Stack Overflow

[Ruby] サンプルデータ作成が便利なGem「faker」

Ruby でテストデータやサンプルデータを作成するときに「faker」というGemを使うと捗りそう。

faker はてなブックマーク - faker

Class: Faker::Internet — Documentation for stympy/faker (master) はてなブックマーク - Class: Faker::Internet — Documentation for stympy/faker (master)

blog.shu-cream.net: Ruby(Rails)で適当なサンプルデータを作るにはfakerかForgery はてなブックマーク - blog.shu-cream.net: Ruby(Rails)で適当なサンプルデータを作るにはfakerかForgery

[Ruby on Rails] 多対多の関連テーブルの作成方法

Ruby on Rails にて、多対多の関連テーブルの作成方法をメモ。

「Rails3レシピブック」の[076]「関連をまたいだ関連を設定する」を参照する。

Railsの多対多で関連テーブルの操作色々 – Tech<3 by 榊祐介 - s21g はてなブックマーク - Railsの多対多で関連テーブルの操作色々 - Tech<3 by 榊祐介 - s21g

[Ruby] Rails(ActiveRecord)の多対多関連 – @yuumi3のお仕事日記 はてなブックマーク - [Ruby] Rails(ActiveRecord)の多対多関連 - @yuumi3のお仕事日記

Railsで多対多のモデルを簡単に扱えるhas_many :through – このブログは証明できない。 はてなブックマーク - Railsで多対多のモデルを簡単に扱えるhas_many :through - このブログは証明できない。

Ruby on Rails : テーブル間リレーションシップ – WebOS Goodies はてなブックマーク - Ruby on Rails : テーブル間リレーションシップ - WebOS Goodies

[Ruby on Rails] seed データの追加や管理をカンタンにしてくれる seed-fu の使い方

Ruby on Rails で seed データの追加や管理をカンタンにしてくれる seed-fu gem が便利なのでご紹介します。

使い方は db/fixtures 以下に users.rb とかいうファイル名で、簡単には下記のような感じで書きます。

db/fixtures/users.rb

User.seed do |s|
  s.id    = 1
  s.login = "jon"
  s.email = "[email protected]"
  s.name  = "Jon"
end
 
User.seed do |s|
  s.id    = 2
  s.login = "emily"
  s.email = "[email protected]"
  s.name  = "Emily"
end

全ての seed ファイルからインポートするには、単に

rake db:seed_fu

を実行すればよいです。

ファイルやモデル別にロードするには、下記のような感じで rake タスクを実行する。

rake db:seed_fu FIXTURE_PATH=path/to/fixtures
rake db:seed_fu FILTER=users,articles

当然だが Ruby コードが書けるので、こんな感じに CSV から DB へインポートみたいなことも書ける。

db/fixtures/users.rb

require 'csv'
 
csv = CSV.read('db/fixtures/users_master.csv')
 
csv.each_with_index do |user, i|
  # skip a label row
  next if i === 0
 
  name = user[0]
  age  = user[1].to_i
 
  User.seed do |s|
    s.id   = i
    s.name = name
    s.age  = age
  end
end

地味に便利ですね。

参考情報