«前の日記(2009-10-01) 最新 次の日記(2009-10-03)» 編集

会長@腹部日記


2009-10-02 [長年日記]

_ 2009年度秋期情報処理技術者試験が近づいてきました

以下のニコニコ動画での、「エアーマンが倒せない」の替え歌を聴いて満足してしまったので、就寝(σ´∀`)σ

【初音ミク】情報処理試験に受からない(エアーマン替歌)

2007-11-04
再生: 3,272
コメント: 264
マイリスト: 40

【初音ミク】情報処理試験に受からない(エアーマン替歌) (03:47)
ウチにもようやくミクがやって来ましたので練習がてら唄わせてみました。ミクとのボーカルレッスンは難しい。皆様、ご指導よろしくおねがいします。(DTMマガジン12月号はまだ来ねぇ)VSQ→ http://www11.axfc.net/uploader/20/so/He_44281.zip.html pass:mikumiku ※追記:応援コメントありがとう! ぶっちゃけ初投稿だったのでここまでコメントを頂けると思ってなく凄く嬉しいです。試験受ける予定の方、一緒に頑張りましょう! でも次回までまだ半年あるから、もう少しミクと遊んでていいよね、ね。

過去問役に立たない AP... シスアド受かって当然 セキュアド受かったと 明日だ・・・ 基本落ちた(´;ω;`) 社会人でうかる人ほん 残業断れし ひえー 勉強できてねぇww...

仲間はいるもんですね(・∀・)

_ Railsにおけるモデルのユニットテストで、rcodetoolsを少し試してみる

同期から紹介されたので少し試してみました

rcodetools is a collection of Ruby code manipulation tools. It includes xmpfilter and editor-independent Ruby development helper tools, as well as emacs and vim interfaces.

[eigenclass - rcodetools Overviewより引用]

# =>

というコメント部分がミソになります。

環境

OS
WindowsXPSP3
Ruby
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
gem list

中途半端です。適宜読み替えてください。

actionmailer (2.3.4, 2.2.2, 2.0.2)
actionpack (2.3.4, 2.2.2, 2.0.2)
activerecord (2.3.4, 2.2.2, 2.0.2)
activeresource (2.3.4, 2.2.2, 2.0.2)
activesupport (2.3.4, 2.2.2, 2.0.2)
mongrel (1.1.4)
mongrel_service (0.3.4)
mysql (2.7.3)
rack (1.0.0)
railroad (0.4.1)
rails (2.3.4, 2.2.2, 2.0.2)
rake (0.8.3, 0.8.1)
rubygems-update (1.3.5, 1.3.1)
sqlite3-ruby (1.2.1)

インストール

 > gem install rcodetools

fastri入れたらいいよ、と出たのでインストール

 > gem install fastri

とりあえず簡単なRailsプロジェクトをscaffoldから

 > rails rcodetools
 > cd rcodetools
 > ruby scriptgenerate scaffold Hoge name:string
 > rake db:migrate RAILS_ENV=test

testコードを編集

 require  'test/test_helper'
 
 class HogeTest < ActiveSupport::TestCase
   def setup
     @hoge = Hoge.create(:name => "hoge_name")
   end
 
   # Replace this with your real tests.
   test "the truth" do
     assert true
   end
   
   test "name" do
     @hoge.name # => 
   end
 end

xmpfilterを実行 (1) - attributeについて

{{code_prettify <<EOS

> xmpfilter.bat test\unit\hoge_test.rb
require  'test/test_helper'
 # !> method redefined; discarding old to_param
class HogeTest < ActiveSupport::TestCase
  def setup
    @hoge = Hoge.create(:name => "hoeg_name")
  end

  test "the truth" do
    assert true
  end

  test "name" do # !> `*' interpreted as argument prefix
    @hoge = Hoge.create(:name => "hoge_name")
    @hoge.name # => "hoge_name"
  end
end
# >> Loaded suite c:/tmp/rails/rcodetools/xmpfilter.tmpfile_2784-1
# >> Started
# >> ..
# >> Finished in 0.469 seconds.
# >>
# >> 2 tests, 1 assertions, 0 failures, 0 errors

EOS }}

xmpfilterを実行 (2) - わざと存在しないattributeは?

   test "name" do
     @hoge = Hoge.create(:name => "hoge_name")
     @hoge.name # => 
     @hoge.foo  # => 
   end
結果

{{code_prettify <<EOS

> xmpfilter.bat test\unit\hoge_test.rb
require  'test/test_helper'
 # !> method redefined; discarding old to_param
class HogeTest < ActiveSupport::TestCase
 def setup
   @hoge = Hoge.create(:name => "hoge_name")
 end

 test "the truth" do
   assert true
 end

  test "name" do # !> `*' interpreted as argument prefix
    @hoge.name # => "hoge_name"
    @hoge.foo  # =>
  end
end
# >> Loaded suite c:/tmp/rails/rcodetools/xmpfilter.tmpfile_2096-1
# >> Started
# >> E.
# >> Finished in 0.468 seconds.
# >>
# >>   1) Error:
# >> test_name(HogeTest):
# >> NoMethodError: undefined method `foo' for #<Hoge:0x34c0aec>
# >>     xmpfilter.tmpfile_2096-1.rb:12:in `test_name'
# >>
# >> 2 tests, 1 assertions, 0 failures, 1 errors

EOS }} ふむ、ごもっともな結果。

xmpfilterを実行 (3) - ActiveRecordにおけるhas_oneな関係はどうなる?

モデル追加、has_one定義。

 > ruby scriptgenerate scaffold Foo name:string
 > rake db:migrate RAILS_ENV=test
 > cat app/models/hoge.rb
 class Hoge < ActiveRecord::Base
   has_one :foo
 end
 > cat app/models/foo.rb
 class Foo < ActiveRecord::Base
   belongs_to :hoge
 end

 > cat db/migrate/yyyymmdd_hhmmss_create_foos.rb (適当に)
 class CreateFoos < ActiveRecord::Migration
   def self.up
     create_table :foos do |t|
       t.string :name
       t.integer :hoge_id
       t.timestamps
     end
   end
 
   def self.down
     drop_table :foos
   end
 end
 > rake db:migrate RAILS_ENV=test

テストコード編集

  test "has_one" do
    @hoge.foo       # =>
    @hoge.foo = Foo.new
    @hoge.foo       # =>
    @hoge.foo.save! # => 
    @hoge.save!     # => 
    @hoge.foo       # =>
  end

xmpfilterの出力

{{code_prettify <<EOS

> xmpfilter.bat test\unit\hoge_test.rb
 (略)
  test "has_one" do
    @hoge.foo       # => nil
    @hoge.foo = Foo.new
    @hoge.foo       # => #<Foo id: 2053932786, name: nil, hoge_id: 2053932786, c reated_at: "2009-10-01 15:21:24", updated_at: "2009-10-01 15:21:24">
    @hoge.foo.save! # => true
    @hoge.save!     # => true
    @hoge.foo       # => #<Foo id: 2053932786, name: nil, hoge_id: 2053932786, c reated_at: "2009-10-01 15:21:24", updated_at: "2009-10-01 15:21:24">
  end # !> `*' interpreted as argument prefix
end

EOS }}

私的まとめ

これは、某Railsプロジェクトでの、破綻したモデル構成の把握に役立ちそうです(σ´∀`)σ

メールで説明する文章や、誰も見てくれないTracのWikiページを作成する場合にも役立ちます_|~|○

<Rubyのパス>/lib/ruby/gems/1.8/gems/rcodetools-0.8.5.0/

には、rcodetools.elが置いてあります。このあたりを読めば読むほど、社内の開発環境をAptanaからemacsへ本格的に移行しようかと思ってきました。

Tags: Ruby Rails

_ グラコロ同盟2009に速攻で参加

総本山での開始宣言を受けまして、サイドバーに出しておきます。

Tags: tDiary

_ きょうのつぶやき : 45回