Ruby

Ruby 2.6 の変更点 - IO

Ruby2.6アドベントカレンダーの10日目の記事です。 qiita.com IO ファイルオープン時のモードに x 追加 IO ファイルオープン時のモードに x 追加 https://bugs.ruby-lang.org/issues/11258 ファイルを作成用にオープンするには w を指定しますが、これはファ…

Ruby 2.6 の変更点 - Exception

Ruby2.6アドベントカレンダーの9日目の記事です。 qiita.com Exception Exception#full_message に :highlight, :order オプション追加 Exception Exception#full_message に :highlight, :order オプション追加 https://bugs.ruby-lang.org/issues/14324 2.…

Ruby 2.6 の変更点 - TracePoint

Ruby2.6アドベントカレンダーの8日目の記事です。 qiita.com TracePoint TracePoint#parameters 追加 TracePoint#enable に :target, :target_line キーワード引数追加 TracePoint TracePoint#parameters 追加 https://bugs.ruby-lang.org/issues/14694 メソ…

Ruby 2.6 の変更点 - Kernel

Ruby2.6アドベントカレンダーの7日目の記事です。 qiita.com Kernel Kernel#then 追加 Kernel#Complex, Kernel#Float, Kernel#Integer, Kernel#Rational に :exception オプション追加 Kernel#system に :exception オプション追加 Kernel#system と Kernel#…

Ruby 2.6 の変更点 - Enumerator と Enumerable

Ruby2.6アドベントカレンダーの6日目の記事です。 qiita.com Enumerator Enumerator#+, Enumerator#chain 追加 Enumerator::ArithmeticSequence 追加 Enumerator::Lazy#filter 追加 Enumerable Enumerable#chain 追加 Enumerable#to_h にブロックを渡すとキ…

Ruby 2.6 の変更点 - Hash

Ruby2.6アドベントカレンダーの5日目の記事です。 qiita.com Hash Hash#merge, merge!, update が複数の引数を受けつける Hash#to_h にブロックを渡すとキーと値を変換できる Hash#filter, Hash#filter! の追加 Hash Hash#merge, merge!, update が複数の引…

Ruby 2.6 の変更点 - Dir, File, FileUtils

Ruby2.6アドベントカレンダーの4日目の記事です。 qiita.com Dir Dir#each_child, Dir#children 追加 Dir.glob で \0 が非推奨 File File.read, .binread, .write, .binwrite, .foreach, .readlines が | で始まっていても外部コマンドを実行しない FileUtil…

Ruby 2.6 の変更点 - Array

Ruby2.6アドベントカレンダーの3日目の記事です。 qiita.com Array Array#union 追加 Array#difference 追加 Array#filter, Array#filter! 追加 Array#to_h にブロックを渡すとキーと値を変換できる Array Array#union 追加 https://bugs.ruby-lang.org/issu…

Ruby 2.6 の変更点 - 言語仕様その2

Ruby2.6アドベントカレンダーの2日目の記事です。 qiita.com 言語仕様 キーワード引数のハッシュのキーがシンボルでない場合はエラー 変数名と同じブロックパラメーターでの警告を削除 原因となった例外も出力 言語仕様 キーワード引数のハッシュのキーがシ…

Ruby 2.6 の変更点 - 言語仕様その1

Ruby2.6アドベントカレンダーの1日目の記事です。 qiita.com Ruby は毎年クリスマスにバージョンが上がります。 今年も順調にいけば 12/25 に Ruby 2.6 がリリースされる予定です。 2.6 がリリースされるまで毎日少しずつ変更点を見ていきます。 ソースは NE…

逆ポーランド記法

ふと、逆ポーランド記法ってのがあったなーと思い出したんだけど、アルゴリズムを全然忘れてたのでネットで検索して、Rubyで実装してみた。 参考にしたページ→ 数式を逆ポーランド法に変換するための事柄 class ReversePolish # 演算子の優先度 OP = { '+' =…

「かんたんRuby」

すがわらまさのり さんが上梓された「かんたんRuby」を頂戴いたしました。 なんとサイン本です。何故かぼかしていますが、本当にサイン本です。 この本はRubyの入門書ですが、帯に「いちばんやさしいプログラミングの入門書」とある通り、プログラミングの入…

RubyのCSVでnilを返さなくする方法

RubyのCSVライブラリはnilを返すことがあるダメな子だという話を前に書いたんですが、RubyKaigi 2018 で須藤さんに聞いたら「最新のはnilじゃなくて空文字列を返すようにできるはず」と言われたので見てみました。 5/31 にリリースされたばかりの Ruby 2.6.0…

PostfixDaemon - Ruby で Postfix のデーモンを書くライブラリ

この前、まつもとりーさんに自分でも忘れていたpostfix-mrubyというのを発掘されて、 Postfix-mruby最高!— 松本 亮介 / まつもとりー (@matsumotory) 2018年2月22日 これによって、前に作ろうと思ってそのまま忘れてたものを思い出したので、作ってみました…

Ruby 2.4 の変更内容 その3 - 標準添付ライブラリ

Ruby 2.4の変更内容の標準添付ライブラリ編です。 全般 組み込みライブラリ 標準添付ライブラリ - このページ cgi 「,」をクッキーのセパレータとして許さない csv liberal_parsing オプションが追加 date DateTime#to_time がタイムゾーンを保持する ipaddr…

Ruby 2.4 の変更内容 その2 - 組み込みライブラリ

Ruby 2.4の変更内容の組み込みライブラリ編です。 全般 組み込みライブラリ - このページ 標準添付ライブラリ 数値 Fixnum と Bignum が Integer に Float#ceil, Float#floor, Float#truncate にオプション引数で桁数を指定可 Integer#ceil, Integer#floor, …

Ruby 2.4 の変更内容 その1

Ruby 2.5 がリリースされたので、そろそろ Ruby 2.3 から 2.4 にしようかと思う今日この頃です。 この前 Ruby 2.5 の変更内容の記事を書きましたが、Ruby 2.4 についてちゃんと調べてなかったので今さらですが調べてみました。 元ネタは https://github.com/…

Ruby 2.5 の変更内容 その1

Rubyは毎年クリスマスにバージョンアップされます。 今年も12/25にRuby 2.5がリリースされました。 https://www.ruby-lang.org/ja/news/2017/12/25/ruby-2-5-0-released/ https://docs.ruby-lang.org/en/trunk/NEWS.html を元に変更内容を調べてみました。 …

Ruby 2.5 の変更内容 その2 - 組み込みライブラリ

https://docs.ruby-lang.org/en/trunk/NEWS.html を元に Ruby 2.5 の変更内容を調べてみました。 長くなったので3つにわけてます。 全般 組み込みライブラリ - このページ 標準添付ライブラリ いろいろ便利になっていますが、個人的には Hash#slice, Kernel#…

Ruby 2.5 の変更内容 その3 - 標準添付ライブラリ

https://docs.ruby-lang.org/en/trunk/NEWS.html を元に Ruby 2.5 の変更内容を調べてみました。 長くなったので3つにわけてます。 全般 組み込みライブラリ 標準添付ライブラリ - このページ 個人的には coverage の分岐カバレッジ取得に SimpleCov とかが…

クラスはクラスクラスのインスタンスである

タイトルで出落ち感がありますが…。 naruby で時間があまった時のために用意してあったのですが、時間が余らなかったので発表しなかった小ネタです。ここで公開して供養します。 Rubyはほぼすべてがオブジェクトです。 クラスもオブジェクトです。オブジェク…

Ruby 2.5

この記事は Ruby 2.5.0 preview1 時点のものです。Ruby 2.5 リリース版については http://tmtms.hatenablog.com/entry/2017/12/30/ruby25 を見てください。 Rubyは毎年クリスマスにバージョンアップされます。 今年も問題なければ12/25にRuby 2.5が出ると思…

ながのRubyの会を開催しました

12/2 ながのRubyの会第1回を開催しました。 naruby.connpass.com キャンセルもなく、飛び入り参加もあり、参加者&発表者あわせて19名でした。 発表者7人のうち普段からRubyを使ってプログラムを書いているのは私含めて約2人でした。長野のRuby層の厚さを感…

Rubyのリファレンスマニュアルを端末で読むrefe

Rubyのリファレンスマニュアルをmanのように端末上で読むコマンドとしてriがありますが、残念ながらこれで読めるのは英語のマニュアルだけです。 Rubyには日本語でかかれたマニュアル(通称「るりま」)がありますが、いちいちブラウザで読むのも面倒だしネッ…

第6回「オブジェクト指向設計実践ガイド」読書会に参加しました

11/15 NSEGの「オブジェクト指向設計実践ガイド」読書会の第6回に参加しました。参加者3名でした。寂しい。 nseg.connpass.com 今回は第6章を読みました。 第6章は継承の話でした。 普段あんまり意識せずになんとなく実装していたのですが、明文化されるとな…

Gitでコメントを無視して差分を見る

古いRubyのコードのコメントを独自のRDoc形式からYARD形式に変換して、さらにその後にプログラムを変更したんですが、その後に差分を見ると大量のコメントの差分が表示されて、実際のコードの差分が何かわからなくなったりしたので、コメントを無視して差分…

Rubyのbundlerをアップデートしたらプログラムが動かなくなった話

Ruby の bundler を 1.13 から 1.15 にアップデートしたら今まで動いたプログラムが動かなくなりました。 こんな感じ: % bundle _1.13.7_ exec ruby -r./hoge.rb -e Hoge.new % % bundle _1.15.4_ exec ruby -r./hoge.rb -e Hoge.new hoge.rb:3:in `initiali…

第5回「オブジェクト指向設計実践ガイド」読書会に参加しました

11/1 NSEGの「オブジェクト指向設計実践ガイド」読書会の第5回に参加しました。参加者7名でした。 nseg.connpass.com 今回は第5章を読みました。 オブジェクトの型(クラス)を調べて処理を変えるというコードの例としてcase文が使われてました: case preparer…

Rubyおもしろい

Rubyは括弧をつけなくてもメソッドを呼び出せます。メソッド名は普通は英小文字で始まります。ローカル変数も英小文字で始まります。 こんなRubyプログラムを実行すると(ifの条件部で代入しているのはtypoではありません)、 def hoge 123 end p hoge x = 456…

第3回「オブジェクト指向設計実践ガイド」読書会に参加しました

10/4 NSEGの「オブジェクト指向設計実践ガイド」読書会の第3回に参加しました。参加者11名でした。盛況ですね。 nseg.connpass.com 今回は第3章を読みました。 コード例が単順すぎて、より良い設計として挙げられてるコードがいまいちピンとこないところもあ…