ミニガミッツのマンチカン

| PAGE-SELECT |


≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



RSSの購読をぜひ →

rss.png

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

Rubyのバージョンごとに違うメソッドを使う方法

alei_star 鉄星
どうも鉄星です。

Rubyってバージョンが上がる度に結構ドラスティックに変わりますよね.
今まで使えていたメソッドが使えなくなったり・・・

厄介なのはMacにデフォルトでインストールされているRubyが1.8.6で
ちょっと古いってことなんよね.

ということで,なるべくバージョンをまたいでも統一したソースを使える
ように記述する方法を紹介します.


それにはsendメソッドを用います.

プログラム中でRubyのバージョンはRUBY_VERSIONで取得できます.


例として,配列中のランダムな要素を抽出するメソッドを見ます.
Ver1.8まではそれは"choice"メソッドでしたが,
Ver1.9以降でそれは"sample"メソッドと名称が変わりました.

通常それらを使用する場合は
array = ["aaa", "bbb", "ccc"]
random_item = array.choice # Ver1.8以前
random_item = array.sample # Ver1.9以降
puts random_item

などとして使用します.


これらを統一的に記述することを考えます.

バージョン関係なくランダムに要素を抽出するメソッドの名称を"random_select"とするとして
if RUBY_VERSION.to_f > 1.8
random_select = "sample"
else
random_select = "choice"
end

と記述しておきます.

そして,メソッドを使用する際は
array = ["aaa", "bbb", "ccc"]
random_item = array.send(random_select) # 共通
puts random_item

として使用するのです.
この書き方なら実際にメソッドを使用する部分で場合分けをしなくて済むので,美しく書けますね.

以上です。




RSSの購読をぜひ →

rss.png

スポンサーサイト

| Ruby | 12:12 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

[Cygwin] RubyのSSL認証でエラーが出る問題の対処法

alei_star 鉄星
どうも鉄星です。

タイトルの件,↓
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

とかいうエラーが出ちゃうあれです.

原因としては
$ ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"

と入力して返ってくるファイル(おそらく"/usr/ssl/cert.pem")がないためです.

対処法としては
wget -O /usr/ssl/cert.pem http://curl.haxx.se/ca/cacert.pem

でWebからcert.pem(cacert.pem)をDLして配置するだけです.
cert.pemのフルパスが上記と違っていたら,適宜変更してください.

以上です。

[参照]
homebrew で入れた openssl を使って Ruby をコンパイルすると SSL 利用時に証明書エラーが発生する場合の対応 - Qiita [キータ]





RSSの購読をぜひ →

rss.png

| Ruby | 10:59 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。