カテゴリー : 2012年 12月

[Windows] シンボリックリンク的な機能「ジャンクション」の使い方

Windows7 で Linux のシンボリックリンクに対応するジャンクションという機能の使い方をメモ。

Windows7(vista)の便利機能シンボリックリンクでデータをDドライブへ逃がす – consbiol のエコ日記 はてなブックマーク - Windows7(vista)の便利機能シンボリックリンクでデータをDドライブへ逃がす - consbiol のエコ日記

[JavaScript]スクロールしたときにサイドバーのパーツをjQueryで止める方法

JavaScript や jQuery を使って、スクロールしたときにサイドバーのパーツを止める方法が紹介されている記事をメモ。

スクロールしたときにサイドバーのパーツをjQueryで止める方法: 小粋空間 はてなブックマーク - スクロールしたときにサイドバーのパーツをjQueryで止める方法: 小粋空間

ライブドアみたいにスクロールしたらサイドバーの広告を固定する – ぼくはまちちゃん!(Hatena) はてなブックマーク - ライブドアみたいにスクロールしたらサイドバーの広告を固定する - ぼくはまちちゃん!(Hatena)

[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

地味に便利ですね。

参考情報