Ruby Centre

Rubyにまつわる雑多な覚え書きなど。

Rubyは, 動的な型付けを持つプログラミング言語。Ruby on Rails など、多くの場所で広く使われている。

バージョン番号、互換性

(2017.8.6 更新)
Rubyのバージョン番号は、1.8.z の頃は z がメジャーバージョン番号, 2.y.z 以降は yがメジャーバージョンを表す。新しいバージョンが出るたび、順次、古い方はセキュリティfixを含むすべてのメンテナンスが終了していく (EOL; End of Life)。

2017年8月現在、Ruby 2.1.x までがEOLになっている。

バージョン番号 安定版リリース EOL入り
1.8.7 2014-07-31
2.1 2017-03-31. Support of Ruby 2.1 has ended
2.2 2014-12-25 2018-03-31 (予定). 現在はセキュリティ修正のみ。まもなくEOL.
2.3 2015-12-25 ※下コメント参照.
2.4 2016-12-25

Ruby 1.8.7 と Ruby 2.1 との間には, 外部から入力された文字列まわりや, いくつかの組込みクラス/メソッドが削除されたり、意味もなく名称変更されていたりと, 注意を要する非互換がいくつもあります。いくつかの部分は書き直しになります。

2016年12月25日に Ruby 2.4.0 がリリースされています。その変更点について::

私(堀川)のところでは、Fixnum / Bignumクラスの廃止によりネイティブ拡張が壊れる問題の影響が見えないので、当面は様子見 (見送り) にしています。

(2017.8.19)
Ruby 2.3.4 は、最新の Fedora 26 Linux 上でビルドできない。(opensslが通らない.)

Fedora 26 には, openssl 1.1.0f と 1.0.2j が用意されている。v1.1.0 で構造体が不透明 (opaque) になったことで、コンパイルエラーになっている。

Ruby の configure スクリプトで 1.0.x を強制するか、付属のopensslライブラリを修正する必要がある。後者の方がよく, Ruby 2.4 ではすでに対策されているが, Ruby 2.3 にバックポートされていない。修正すべき箇所が多く、地味に面倒くさい。

ということで, Ruby 2.3 は, もはやメンテナンスされてないと言える。Ruby 2.4.x 一択になっている。だいぶ勘弁してほしい。

(2017.8.19 ここまで)

出版物

私が執筆した書籍です。

Ruby de CGI -- Rubyで作るインタラクティブWebサイト

基礎から学ぶWebデータベースプログラミング

文書

Ruby.first (LMS 2001.11.25)
Rubyを紹介した講演のスライド。
RubyでXML (REXML)
Ruby標準添付のXMLライブラリ、REXMLについて。
RubyでXML (NQXML)
REXMLが登場するまでもっぱら使われていたNQXMLについて
Rubyでのクラスのアクセス制御
public, protected, privateの違いについて。
Rubyの型システム (第1回)
Rubyのクラスや特異クラス、いろいろな変数など。
Ruby/DBIと、SQLite・MySQL・PostgreSQL拡張モジュールのインストール
Rubyスクリプトのテスト技法
単体テストフレームワークRubyUnitについて。
Rubyでクロージャ、カリー化
関数型プログラミング言語っぽく。

Ruby on Railsなどのgemファイル依存関係

Ruby on Rails ~レールの路線図~ Ruby on Railsの初歩的な全体像。

Ruby on RailsでOracle Databaseにアクセス (2016.11) Rails 4.2 / 5対応。

テンプレートエンジンTempura

別セクションにあるもの

Rubyで分散オブジェクト (dRuby)

リファレンス

組み込みクラス・モジュール、添付ライブラリ一覧

主要な標準クラス・メソッド

リファレンス Test::Unit (2017.2) Ruby 2.3.3 に添付の test-unit に対応。

REXMLリファレンス

Ruby/DBIライブラリ・リファレンス

CGIライブラリの主なクラス・メソッド

外部リンク

オブジェクト指向スクリプト言語 Ruby
Ruby本体とアーカイブ集など
Rubyリファレンスマニュアル - Rubyリファレンスマニュアル
Ruby 1.8およびその付属ライブラリのマニュアル

いろいろ

(2017.2) Ruby 2.3.3 を既存のインストール先に上書きインストールしようとすると、エラーになる。どうやら, /usr/local/bin/rake が存在する (またはより新しいバージョン?) の場合に失敗するようだ。

installing extension headers: /usr/local/include/ruby-2.3.0/ruby
installing default gems:      /usr/local/lib/ruby/gems/2.3.0 (build_info, cache, doc, extensions, gems, specifications)
                              bigdecimal 1.2.8
                              io-console 0.4.5
                              json 1.8.3
                              psych 2.1.0
                              rdoc 4.2.1
installing bundle gems:       /usr/local/lib/ruby/gems/2.3.0 (build_info, cache, doc, extensions, gems, specifications)
                              power_assert 0.2.6
                              did_you_mean 1.0.0
                              rake 10.4.2
/home/hori/Downloads/ruby-2.3.3/lib/rubygems/installer.rb:233:in `check_executable_overwrite': no implicit conversion of nil into String (TypeError)
        from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/installer.rb:474:in `block in generate_bin'
        from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/installer.rb:461:in `each'
        from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/installer.rb:461:in `generate_bin'
        from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/installer.rb:301:in `install'
        from ../ruby-2.3.3/tool/rbinstall.rb:686:in `call'
        from ../ruby-2.3.3/tool/rbinstall.rb:686:in `block in '
        from ../ruby-2.3.3/tool/rbinstall.rb:754:in `block (2 levels) in 
' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:821:in `block in each_spec' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:743:in `block (2 levels) in each_gemspec' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:742:in `each' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:742:in `block in each_gemspec' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:741:in `each' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:741:in `each_gemspec' from /home/hori/Downloads/ruby-2.3.3/lib/rubygems/specification.rb:819:in `each_spec' from ../ruby-2.3.3/tool/rbinstall.rb:751:in `block in
' from ../ruby-2.3.3/tool/rbinstall.rb:801:in `block in
' from ../ruby-2.3.3/tool/rbinstall.rb:798:in `each' from ../ruby-2.3.3/tool/rbinstall.rb:798:in `
' uncommon.mk:260: ターゲット 'do-install-all' のレシピで失敗しました make: *** [do-install-all] エラー 1

ruby_2_3 ブランチではまだ直っていなかったので、パッチをつくりました。単に ruby_2_4 ブランチの修正を適用するだけ。

ruby-2.3.3-fix-rubygems-installer.diff

関連するチケットはこれ; Bug #12186: /snapshot/lib/rubygems/installer.rb:233 - Ruby trunk - Ruby Issue Tracking System

(2017.2 ここまで)