2012年12月31日月曜日

Ruby Accessor Methods

( ̄(エ) ̄)彡☆

Ruby Accessor Methods

C#
class Foo
  private string name;

  public string Name
  {
    set
    {
      name = value;
    }
    get 
    {
      return name;
    }
  }
end

Ruby
class Foo
  def initialize(name)
    @name = name
  end
  
  #attr_reader #get only
  #attr_writer #set only
  attr_accessor :name #get set
end

It's simple ヘ(^o^)ノ

2012年12月27日木曜日

Sublime Text 2でBuildSystemをrbenvに変更

( ̄(エ) ̄)彡☆


Github → sublime-text-2-rbenv

使い方は簡単ヘ(^o^)ノ
cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/
git clone git://github.com/felipeelias/sublime-text-2-rbenv.git rbenv

Sublime Textのツールバー Tools → Build System
RBenvを選択

さっそく⌘+Bで実行
ruby_version.rb
puts `ruby -v`

実行結果
[Errno 2] No such file or directory
[cmd:  [u'~/.rbenv/bin/rbenv', u'/usr/local/bin/rbenv', u'exec', u'ruby', u'/Users/murajun/test.rb']]
[dir:  /Users/murajun]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
[Finished]

ディレクトリがない…だと…( ; ゚Д゚)

~/Library/Application Support/Sublime Text 2/Packages/rbenv/RBenv.sublime-build
{
  "cmd": ["~/.rbenv/bin/rbenv", "/usr/local/bin/rbenv", "exec", "ruby", "$file"],
  "selector": "source.ruby"
}

~/.rbenv/bin/rbenvってのを削除して⌘+Bで実行
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.1]
[Finished in 0.1s]

できたヘ(^o^)ノ

2012年12月20日木曜日

Rails BulkInsert and Destroy #rails

( ̄(エ) ̄)彡☆

環境
Ruby 1.9.3-p327
Rails  3.2.2
Postgresql 9.2.2

以前、Rails CSVインポートっての書いたけど…
def create
  require 'csv'

  if params[:upload_file].blank? == false
    reader = params[:upload_file].read

    CSV.parse(reader) do |row|
      file = File.new
      file["field_name"] = row[0]
      file.save ← ここがマズイ
    end
  end
end

これだと鬼の様にInsertクエリが走ります…

なので、BulkInsertを使いましょうw

Gemfile
gem "activerecord-import", ">= 0.2.0"

修正後
def create
  require 'csv'

  if params[:upload_file].blank? == false
    reader = params[:upload_file].read
    
    files = []
    CSV.parse(reader) do |row|
      files << File.new(field_name: row[0])
    end

    File.import(files)
  end
end

これでInsertクエリが一発走っておしまいヘ(^o^)ノ

10,000レコードのインポートで5218.9ms

実はdestroy_allでも同じ現象…

鬼の様にDeleteクエリが走ります…

こんな感じ?
ids = []
@files = File.all
@files.each do |f|
  ids << f.id
end
File.delete_all("id in (#{ids.join(',')}) ")

ちょっと強引すぎるか…( ; ゚Д゚)

1628.5ms!

これでSelect, Delete, Insertのクエリがそれぞれ一回だけ実行されるようになった

ツッコミ大歓迎ヘ(^o^)ノ

2012年12月5日水曜日

Rails Tutorial Chapter3 Title test does not work #rails

Listing 3.17
it "should have the right title" do
 visit '/static_pages/home'
 page.should have_selector('title', :text => "Ruby on Rails Tutorial Sample App | Home")
end

Capybara2.0.1 does not work ( ̄0 ̄)
Also found "", which matched the selector but not all filters.

Updated
it "should have the right title" do
 visit '/static_pages/home'
 should have_xpath("//title[contains(.,'Ruby on Rails Tutorial Sample App | Home')]")
end

It Worked ヘ(^o^)ノ

or
gem 'capybara', '1.1.2'