WEB+DB PRESS Vol.73

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

ダウンロード

■ご注意
  • 本コーナーは,本誌記事参考用資料としてのご提供を目的としております。
  • 本誌記載の内容およびサポートサイトで公開しているサンプルコードに基づく運用の結果について,記事の筆者,プログラムの作者/提供元,(株)技術評論社は一切の責任を負いかねます。ご自身の責任のもと,ご使用ください。
  • 各サンプルファイル/ソースコードには,個別に,ライセンスやREADMEファイルなどで注意事項/制限事項が添付されている場合がございます。その場合,該当のライセンス,注意事項/制限事項を優先して適用とさせていただきますので,ダウンロード後,内容をご確認ください。

特集2「詳解Rails 4」

特集3「Redis大活用」

連載

  • 「一歩先ゆくRuby」で使用されたソースコード
  • 「Perl Hackers Hub」で使用されたソースコード
  • 「Javaの底力 ── 火消しエンジニアが明かすテクニック」で使用されたソースコード
  • 「JavaScript活用最前線 ── 大規模開発の現場から」で使用されたソースコード
  • 「巨人の肩からPHP ── 先人たちに学ぶモダンプログラミング」で使用されたソースコード
  • 「フロントエンドWeb戦略室」で使用されたソースコード

補足情報

特集3「Redis大活用」5章の内容について

(2013年4月1日更新)

記事中の同点問題について,執筆時と現在の状況が変わりました。詳しくは著者のブログを参照してください。
http://blog.nekokak.org/show?guid=iIz4tOKF4hG-rirtGCByNQ

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2013年6月19日更新)

特集1「たのしい開発実況中継」
P.44 図1

Rudy/Rails
Ruby/Rails

連載「一歩先ゆくRuby」
P.126 左段3段落2行目

2つの方法が用意されています。
(削除)

P.126 左段4段落1行目


1つ目は、同じInchAvailableモジュールの中で利用する方法です。次のように、module
InchAvailableの内部であれば、メソッドの外でも中でもinch/inchesメソッドを利用できます。
module InchAvailable
  p 3.inches
  #=> 7.62
  # たとえば、1cm あたり10 円の布
  def get_price_from_inch(size)
    10 * size.inch
  end
  module_function :get_price_from_inch
end
InchAvailable.get_price_from_inch 10
#=> 254.0

こちらの仕様はrc1のものです。Ruby 2.0.0パッチレベル0以降では、refineの宣言をしたモジュール内部での挙動変更は利用できません。筆者のブログもあわせてご覧下さい。
http://blog.udzura.jp/2013/02/21/wrote-to-webdb-press-vol-73-about-ruby-2-0/
記述したサンプルコードは以下であれば動作します。


■main.rb:
module InchAvailable
  refine Fixnum do
    def inch
      self * 2.54
    end
    alias inches inch
  end
end
require './outer'

# defined in outer.rb, but OK
SampleClass.get_price_from_inch(10) #=> 254.0

■outer.rb:
using InchAvailable
class SampleClass

  p 3.inches #=> 7.62

  def self.get_price_from_inch(size)
    10 * size.inch
  end
end
SampleClass.get_price_from_inch(10) #=> 254.0

P.126 左段11段落1行目


2つ目の方法として、別のモジュールやクラスを作り、その内部でInchAvailableを有効にすることもできます。同様にModule#usingを使います。
class Student
  using InchAvailable
  def height_by_inch
    @height_by_cm / 1.inch
  end
end

(削除)

連載「Perl Hackers Hub」
P.133 リスト9の2行目


sub func_returns_lvalue : lvavlue { # (1)


sub func_returns_lvalue : lvalue { # (1)