Ruby1.9

2009年03月07日

短いですが報告だけ。

今日、私が管理しているTwitter botをすべてRuby1.9上で動作するように動作確認・プログラム修正を行った。
変更点は予想以上に少なかった。問題になった点は以下の通りであった。

(1) String#lengthの挙動の違い(Ruby1.8だとバイト数、Ruby1.9だと文字数が返る。)

(2) yaml.rbでYAMLファイルを読み込んだ際に、文字列のエンコーディングが常に「US-ASCII」になること(@sunohara_yoheiのプログラムにおいて、YAMLファイルに格納されていた文字列を、エンコーディングがUTF-8の正規表現リテラルにマッチさせたため、例外が発生していた。)

(3) parsedate.rbの廃止(time.rbで代替して対応した。)

【追記】(2009.3.9)
(2)を削除した(問題は別のことが原因だった模様)。外部ファイルから読み込んだ文字列は「Encoding.default_external 」のエンコーディングになるとのことだった。(参照:IO のエンコーディングとエンコーディングの変換

maraigue at 00:04コメント(0)トラックバック(0) 

2008年06月16日

先程Twitterの@Misho氏がこのようなことを話していた。

少し試してみた結果、「ruby」コマンドでRuby1.8を、「ruby1.9」コマンドでRuby1.9を使えるようになったので方法をまとめておく。
※Windows XP Home (SP2)にて試しました。

[準備]

すでにRuby1.8を「C:\ruby」にインストールしており、Ruby1.9はまだインストールしていないと仮定する。また、環境変数PATHに「C:\ruby\bin」が含まれており、コマンドライン上で「ruby」と入力するとRuby1.8が立ち上がる状態になっているとする(この準備を一番楽に行うには、One-Click Ruby Installerが便利であろう)。

[インストール]

  1. Ruby1.9のWindows版をダウンロードし展開する。ここでは「C:\ruby1.9」に展開したと仮定する。
  2. 「C:\ruby\bin\ruby1.9.bat」を以下の内容で作成する。
    @echo off
    set __CALLER_PATH__=%CD%
    cd C:\ruby1.9\bin
    ruby %*
    cd %__CALLER_PATH__%
  3. コマンドラインから「ruby1.9」と入力するとRuby1.9が立ち上がる。

実験。Ruby1.9で新設されたメソッド(Enumerable#max_by)と、Ruby1.9で導入されたライブラリ(ripper)を使ってみる。

C:\Documents and Settings\hiro>ruby
p [1, 3, 6].max_by{ |x| -x }
^Z
-:1: undefined method `max_by' for [1, 3, 6]:Array
 (NoMethodError)

C:\Documents and Settings\hiro>ruby1.9
p [1, 3, 6].max_by{ |x| -x }
^Z
1

C:\Documents and Settings\hiro>ruby
require "ripper"
^Z
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_req
uire.rb:27:in `gem_original_require': no such file
 to load -- ripper (LoadError)
        from c:/ruby/lib/ruby/site_ruby/1.8/rubyge
ms/custom_require.rb:27:in `require'
        from -:1

C:\Documents and Settings\hiro>ruby1.9
require "ripper"
^Z

ちゃんとRuby1.8とRuby1.9が使い分けられている。

他のコマンドも同様にバッチファイルを作れば、Ruby1.8と1.9を使い分けることが出来る。

(補足)

上記のTwitterログにおけるiratqq氏の発言「それとも環境変数RUBYLIBも必要?」については、特に設定しないで動きました。

※2009.8.4 若干修正(リンク先修正など)



maraigue at 19:32コメント(0)トラックバック(0) 
livedoor プロフィール

H. Hiro

  • ライブドアブログ