rails for ruby 1.9 moriq rails 勉強会 関西 · rails for ruby 1.9 •ruby 1.9 対応rails...

Post on 27-May-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Rails for Ruby 1.9

moriq

Rails勉強会勉強会勉強会勉強会@関西関西関西関西

2

もくじもくじもくじもくじ

•Ruby 1.8 vs 1.9

•Rails for Ruby 1.9

•Install Ruby 1.9

•Benchmark

3

Release schedule

•Ruby 1.8.6 – 2007/03

•Rails 1.2.3

•Ruby 1.9.1 – 2007/12–このこのこのこの時点時点時点時点ででででRailsもももも動動動動くとくとくとくと嬉嬉嬉嬉しいしいしいしい

4

Ruby 1.8 vs 1.9

5

Quiz #1 String

p "A"[0]

p ?A

6

Quiz #1 String

p "A"[0] 65 "A"

p ?A 65 "A"

7

Quiz #1 String

p "A".ord 65

p 65.chr "A"

8

Quiz #1 String

•Stringははははbytecodeのののの配列配列配列配列

•Stringはははは文字文字文字文字のののの配列配列配列配列

9

Quiz #2 Array

x=[0,1];x[0,1]=nil;p x

y=[0,1].zip([2,3]);p y

10

Quiz #2 Array

x=[0,1];x[0,1]=nil;p x

[1]

[nil,1]

11

Quiz #2 Array

Array#[]=nil•要素要素要素要素をををを削除削除削除削除•値値値値としてとしてとしてとしてnilをををを設定設定設定設定

ENV['…'] = nilENV.delete('…')

12

Quiz #2 Array

y=[0,1].zip([2,3]);p y

[[0,2],[1,3]]#<Enumerable::Enumerator:>

•Streamをををを効率的効率的効率的効率的にににに扱扱扱扱うううう

13

Quiz #3 when

x=1

p case x

when 1: "A"

when 2: "B"

end

14

Quiz #3 when

"A"

syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '¥n'when 1: "A"

^

syntax error, unexpected keyword_when, expecting $endwhen 2: "B"

^

15

Quiz #3 when

•コロンコロンコロンコロン':'はははは貴重貴重貴重貴重なななな資源資源資源資源–Symbol :foo

–Module Foo::Bar

–Hash {x:1,y:2}

–Keyword arguments (Ruby2.0?) x:,y: = {x:1,y:2}

16

Quiz #3 when

x=1

p case x

when 1; "A"

when 2; "B"

end

17

Quiz #4 send

class C

def one() 1 end

private :one

end

p C.new.send(:one)

18

Quiz #4 send

1

in `<main>': private method `one' called for #<C:0xc285a8>

(NoMethodError)

19

Quiz #4 send

class Cdef one() 1 endprivate :one

endp C.new.funcall(:one)p C.new.__send!(:one)

20

Quiz #4 send

send funcall

public Y Y

protected N N

private N Y

21

Ruby 1.8 vs 1.9

•文法文法文法文法: ほぼほぼほぼほぼ同同同同じじじじ

•メソッドメソッドメソッドメソッド: 非互換非互換非互換非互換ありありありあり

22

Rails for Ruby 1.9

23

Rails for Ruby 1.9

•Ruby 1.9対応対応対応対応Railsをををを作作作作るるるる–Ruby trunk (v1.9.0)

–Rails 1-2 branch (v1.2.*)

•ActiveSupport

•ActionPack

•ActiveRecord

24

Dependency

•Railsがががが依存依存依存依存するするするする外部外部外部外部ライブラリライブラリライブラリライブラリ–DB binding, Web server

–Rake, RubyGems

–cgi.rb

•Railsだけのだけのだけのだけの対応対応対応対応ではではではでは済済済済まないまないまないまない

25

Unstable…

•Ruby 1.9はまだはまだはまだはまだ不安定不安定不安定不安定–[BUG]とのとのとのとの戦戦戦戦いいいい

•Railsはははは安定性安定性安定性安定性がががが最重要最重要最重要最重要–ゆっくりゆっくりゆっくりゆっくり移行移行移行移行

26

Test First!

•テストテストテストテストもももも1.9対応対応対応対応はははは必要必要必要必要•Rubyのののの変更変更変更変更にににに弱弱弱弱いいいい

2007-03-15:

AS: 8F 6EAP: 1F 0EAR: 7F 0E (base_test only)

27

Optimizing

•新仕様新仕様新仕様新仕様をををを使使使使ってってってって効率改善効率改善効率改善効率改善–Class variable

–*_methods

–BasicObject

28

Resources

Project site:

http://collaboa.moriq.com/

SVN repos:

http://dev.moriq.com/svn/

local/rails/

29

Install Ruby 1.9

30

Install Ruby 1.9

•1.8環境環境環境環境とととと共存共存共存共存させるさせるさせるさせる–configure options

–注意注意注意注意: #!, `ruby`

•RubyGemsのしくみのしくみのしくみのしくみ–$GEM_HOME

–1.9でででで動作動作動作動作[ruby-dev:30582]

31

configure options

--enable-shared

--prefix=~/c

--program-suffix=-1.8.6

/home/moriq/c/bin/ruby-1.8.6

32

shebang #!

~/c/bin/gem:#!/usr/bin/env ruby

~/c/bin/rake:#!/home/moriq/c/bin/ruby-1.8.6

33

call ruby

rake/Rakefile:

`ruby -Ilib ./bin/rake

--version`

34

Install Ruby 1.9

•1.8環境環境環境環境とととと共存共存共存共存させるさせるさせるさせる–configure options

–注意注意注意注意: #!, `ruby`

•RubyGemsのしくみのしくみのしくみのしくみ–$GEM_HOME

–1.9でででで動作動作動作動作[ruby-dev:30582]

35

$GEM_HOME

/usr/lib/ruby/gems/1.8/…

export GEM_HOME=~/c/home/moriq/c/

cache/

doc/

gems/

specifications/

36

Gemのののの構造構造構造構造

tar xvf cache/sources-0.0.1.gemdata.tar.gz-> lib/sources.rb

metadata.gz-> metadata (YAML)

•Zlib::GzipReader– 1.9でででで動作動作動作動作[ruby-dev:30582]

37

Benchmark

38

Benchmark

•benchmark.rb–注意注意注意注意: GC, IO

•profiler–set_trace_func

–Ruby trunkではではではでは動動動動かないかないかないかない

39

Rails Bench

•gems vs vendor–あまりあまりあまりあまり影響影響影響影響しないしないしないしない

•ActiveSupport–requireするとするとするとすると遅遅遅遅くなるくなるくなるくなる

–なぜなぜなぜなぜ????

40

ActiveRecord Bench

sqlite3-ruby select (n=1000):

•1.8.6: 2147 req/sec•1.9.0: 2320 req/sec

with ActiveRecord:

•1.8.6: 1100 req/sec•1.9.0: 804 req/sec

41

ActionPack Bench

dispatch (n=100):

•1.8.6: 108 req/sec

•1.9.0: 126 req/sec

with AR (2 records):

•1.8.6: 85.2 req/sec

•1.9.0: 96.2 req/sec

42

Bottleneck?

•ActiveSupportあやしいあやしいあやしいあやしい

•require 'active_record' のののの有無有無有無有無をををを条件条件条件条件にににに計測計測計測計測

•GCがががが効効効効いているいているいているいている

43

sqlite3-ruby benchmark

0.2

0.3

0.4

0.5

0.6

0.7

10 100 1000 10000

Runs

Avg. runtime (msec)

bm3as-190

bm3as-186

bm3-190

bm3-186

44

まとめまとめまとめまとめ

•Rails for Ruby 1.9ははははそこそこそこそこそこそこそこそこ動作動作動作動作しますしますしますします

•Ruby 1.9をををを使使使使ってみようってみようってみようってみよう

45

おわりおわりおわりおわり

top related