macにeclipse3.7 indigo をインストール(日本語)

  1. 本体ダウンロード http://www.eclipse.org/
  2. 日本語パッチ取得 http://mergedoc.sourceforge.jp/
  3. 両方共解凍する。
  4. 日本語パッチのfeaturesとpluginsの中身を本体にコピー
  5. 本体の「パッケージの内容を表示」
  6. Contents->MacOS->eclipse.iniを編集
  7. 最後の行に下記を追加する。
-javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

eclipse 3.7 の変更点

下記にまとめられてた。
http://www.atmarkit.co.jp/fjava/rensai4/devtool24/devtool24_1.html

macにruby1.9をインストール

  1. macportsってのを入れる。http://www.macports.org/install.php
  2. ターミナルを開いて下記をコマンド実行

$ sudo port search ruby
$ sudo port install ruby19 +nosuffix

+nosuffixを付けないと、ruby19 とかで作られちゃうみたいだ。

そして

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10]

ubuntuにruby1.9.1を入れる。

  1. synapticマネージャからruby1.9.1-full?を入れる
  2. /usr/bin/ に ruby1.9.1ってのが作られるが、ruby っというエイリアスがない。
  3. synapticマネージャからrubyを入れる。
  4. 下記おまじないを実行する。

sudo aptitude install ruby rubygems ri ruby1.9.1 ri1.9.1

sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 400 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby1.9.1.1.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.9.1 \
--slave /usr/bin/irb irb /usr/bin/irb1.9.1 \
--slave /usr/bin/gem gem /usr/bin/gem1.9.1

sudo update-alternatives --config ruby

smokinatom@smokinatom-VirtualBox:~$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]

macのマウスが遅い

会社でwindowsを使っていて、かえってmacを使うとものすごく違和感がある。
マウスの加速度違うっぽい

ターミナルをひらいて、下記コマンドを実行すると早くなるっぽい。

defaults write "Apple Global Domain" com.apple.mouse.scaling 6

いいかなって、思ったが。

やっぱりゆっくり動かすと、マウスの動きが遅くなっていて、
加速度自体を切らないとだめっぽい。

http://www.usboverdrive.com/USBOverdrive/News.html

こいつを使うことにしました。有料なのかもしれないですが、
今のところpayせずに使えております。

windows でrailsのテスト実行がやたら遅い

やたら遅いんです。

ruby -Itest test/unit/post_test.rb

require 'test_helper'

class PostTest < ActiveSupport::TestCase
  # Replace this with your real tests.
  test "the truth" do
    assert true
  end
  test "name is required" do

    p = Post.new(:content => "A new post")
    p.save
    p.errors
  end
end

だけなのに、1分くらいかかる。。。

ググルとIOが遅いとか下記参照
http://d.hatena.ne.jp/ashel/20100505/1273073942
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/46001

上記MLにあったコードを実行

require "benchmark"


File.open(__FILE__,'r') do |f|
  $testdata = f.read
end

Benchmark.bm(7,">total:",">avg:") do |bm|
  testresults = []
  10.times do |i|
    testresults << bm.report("#{i + 1}:") do
      Dir.mkdir("testdir") unless File.exists?("testdir")
      Dir.chdir("testdir") do
        1000.times do |i|
          File.open("testfile#{i}.txt","w") do |f|
            f.write $testdata
          end
        end
        File.open("join.txt","w") do |of|
          Dir.glob("testfile*.txt") do |fn|
            File.open(fn) do |in_file|
              of.write in_file.read
            end
            File.unlink(fn)
          end
        end
        File.unlink("join.txt")
      end
    end
  end
  testtotal = testresults.inject {|total,test| total += test}
  [testtotal, testtotal / 10]
end

windows で実行

$ ruby -v
ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-mswin32]

$ ruby -KU -- 'C:\Users\HOME\My Documents\Aptana Studio 3 Workspace\rubytest\src\testbench.rb'
user system total real
1: 0.531000 1.950000 2.481000 ( 10.060575)
2: 0.437000 1.763000 2.200000 ( 4.975285)
3: 0.421000 1.810000 2.231000 ( 5.351306)
4: 0.374000 1.872000 2.246000 ( 5.339305)
5: 0.437000 1.716000 2.153000 ( 5.521316)
6: 0.312000 1.856000 2.168000 ( 5.129294)
7: 0.265000 2.200000 2.465000 ( 5.594320)
8: 0.421000 1.919000 2.340000 ( 6.094348)
9: 0.312000 1.950000 2.262000 ( 5.117293)
10: 0.452000 1.638000 2.090000 ( 5.184296)
>total: 3.962000 18.674000 22.636000 ( 58.367338)
>avg: 0.396200 1.867400 2.263600 ( 5.836734)

windowsvirtualBoxを入れて、そいつにubuntuを入れてやってみた。

smokinatom@smokinatom-VirtualBox:~/Aptana Studio 3 Workspace/rubyTest$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]

user system total real
1: 0.070000 0.200000 0.270000 ( 2.291950)
2: 0.070000 0.170000 0.240000 ( 2.067353)
3: 0.090000 0.170000 0.260000 ( 2.151170)
4: 0.060000 0.140000 0.200000 ( 1.764795)
5: 0.060000 0.120000 0.180000 ( 1.030653)
6: 0.050000 0.140000 0.190000 ( 1.050937)
7: 0.060000 0.100000 0.160000 ( 0.719260)
8: 0.030000 0.140000 0.170000 ( 0.771775)
9: 0.060000 0.110000 0.170000 ( 0.738916)
10: 0.070000 0.090000 0.160000 ( 0.761743)
>total: 0.620000 1.380000 2.000000 ( 13.348551)
>avg: 0.062000 0.138000 0.200000 ( 1.334855)

???????やたらはやい。

よくわからないが、BASEはどちらもwindowsなんだが、これだけ違いがあるのか。

macでもやてみた。

$ ruby rubybench.rb
user system total real
1: 0.070000 0.320000 0.390000 ( 3.564786)
2: 0.070000 0.310000 0.380000 ( 3.693149)
3: 0.070000 0.300000 0.370000 ( 5.160656)
4: 0.080000 0.340000 0.420000 ( 4.585631)
5: 0.090000 0.350000 0.440000 ( 5.781132)
6: 0.070000 0.300000 0.370000 ( 6.913310)
7: 0.090000 0.340000 0.430000 ( 5.726153)
8: 0.080000 0.340000 0.420000 ( 5.574381)
9: 0.090000 0.340000 0.430000 ( 5.745249)
10: 0.080000 0.340000 0.420000 ( 5.727327)
>total: 0.790000 3.280000 4.070000 ( 52.471773)
>avg: 0.079000 0.328000 0.407000 ( 5.247177)

モデルのテスト

http://edgeguides.rubyonrails.org/testing.html
を見てる。

scaffoldを使用して、作成すると、
test/fixtures/posts.yml
test/unit/post_test.rb
が自動的に追加されているので、これらを実行すれば良い。
中身は、それぞれこんな感じ。

# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html

one:
  name: MyString
  title: MyString
  content: MyText

two:
  name: MyString
  title: MyString
  content: MyText
require 'test_helper'

class PostTest < ActiveSupport::TestCase
  # Replace this with your real tests.
  test "the truth" do
    assert true
  end
end

validationのテストを追加する

モデルPost

class Post < ActiveRecord::Base
  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end

p = Post.new(:content => "A new post")
p.save
p.errors

railsメモ

リンク追加

app/views/home/index.html.erb

<h1>Hello, Rails!</h1>
<%= link_to "My Blog", posts_path %>

モデル

app/models/post.rb

validationの追加

class Post < ActiveRecord::Base
  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end

name,titleが必須になる
titleは、5文字以上

コンソールを使う

$ rails console

ってやると、irbが起動するっぽくて、
つくったモデルを実行出来るみたいだ。

$ rails console
Loading development environment (Rails 3.0.9)
irb(main):001:0> p = Post.new(:content => "A new post")
=> #
irb(main):002:0> p.save
=> false
irb(main):003:0> p.error
NoMethodError: undefined method `error' for #
from c:/ruby/lib/ruby/gems/1.9.1/gems/activemodel-3.0.9/lib/active_model/attribute_methods.rb:392:in `method_missing'
from c:/ruby/lib/ruby/gems/1.9.1/gems/activerecord-3.0.9/lib/active_record/attribute_methods.rb:46:in `method_missing'
from (irb):3
from c:/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands/console.rb:44:in `start'
from c:/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands/console.rb:8:in `start'
from c:/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:23:in `'
from script/rails:6:in `require'
from script/rails:6:in `

'
irb(main):004:0> p.errors
=> {:name=>["can't be blank"], :title=>["can't be blank", "is too short (minimum is 5 characters)"]}
irb(main):005:0>

Postされたすべてを表示する機能のところ

 def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @posts }
    end
  end

Post.all でDBからすべて抽出し、変数@postsにいれている。
そしてviewは下のようになっている。

<% @posts.each do |post| %>
  <tr>
    <td><%= post.name %></td>
    <td><%= post.title %></td>
    <td><%= post.content %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>