Ruby

Ruby 2.6 の変更点 - ENV, Struct, Random

Ruby2.6アドベントカレンダーの19日目の記事です。 qiita.com ENV ENV.to_h にブロックを渡すとキーと値を変換できる Struct Struct#to_h にブロックを渡すとキーと値を変換できる Struct#filter 追加 Random Random.bytes 追加 ENV ENV.to_h にブロックを渡…

Ruby 2.6 の変更点 - Time

Ruby2.6アドベントカレンダーの18日目の記事です。 qiita.com Time タイムゾーンサポート 東京五輪時間 Time タイムゾーンサポート https://bugs.ruby-lang.org/issues/14850 Time.new とか Time#getlocal は UTCからの時差を文字列("+09:00"等)か数値(秒数)…

Ruby 2.6 の変更点 - RubyVM::AbstractSyntaxTree

Ruby2.6アドベントカレンダーの17日目の記事です。 qiita.com RubyVM::AbstractSyntaxTree RubyVM::AbstractSyntaxTree Ruby スクリプトを解析して抽象構文木を作成するクラスが追加されました。 RubyVM::AbstractSyntaxTree.parse は引数の文字列をパースし…

Ruby 2.6 の変更点 - String

Ruby2.6アドベントカレンダーの16日目の記事です。 qiita.com String Unicode 11 対応 String#crypt が非推奨 String#split がブロックをイテレータとして使用する String Unicode 11 対応 https://bugs.ruby-lang.org/issues/14802 String#crypt が非推奨 h…

Ruby 2.6 の変更点 - Object と NilClass

Ruby2.6アドベントカレンダーの15日目の記事です。 qiita.com Object Object#=~ が非推奨 NilClass NilClass#=~ 追加 Object Object#=~ が非推奨 https://bugs.ruby-lang.org/issues/15231 Object#=~ があり、それが常に nil を返すためにプログラムのミスを…

Ruby 2.6 の変更点 - Range

Ruby2.6アドベントカレンダーの14日目の記事です。 qiita.com Range Range#step が Enumerator::ArithmeticSequence オブジェクトを返す Added Range#% 追加 Range#=== が #include? だけではなく #cover? も使う Range#cover? が Range オブジェクトも受け…

Ruby 2.6 の変更点 - Module

Ruby2.6アドベントカレンダーの13日目の記事です。 qiita.com Module Module#method_defined?, Module#private_method_defined?, Module#protected_method_defined? で継承されたものを含むかどうかを指定可能 Module Module#method_defined?, Module#privat…

Ruby 2.6 の変更点 - Method と Proc

Ruby2.6アドベントカレンダーの12日目の記事です。 qiita.com Method Method#<<, Method#>> 追加 Proc Proc#<<, Proc#>> 追加 Method Method#<<, Method#>> 追加 https://bugs.ruby-lang.org/issues/6284 このメソッドオブジェクトと他のメソッドやProc等(#c…

Ruby 2.6 の変更点 - KeyError, NameError, NoMethodError

Ruby2.6アドベントカレンダーの11日目の記事です。 qiita.com KeyError KeyError.new に :receiver, :key オプション追加 NameError NameError.new に :receiver オプション追加 NoMethodError NoMethodError.new に :receiver オプション追加 KeyError KeyE…

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はほぼすべてがオブジェクトです。 クラスもオブジェクトです。オブジェク…