やってみた。
型検査に使う gem が Ruby2.6 を要求しているので、それをインストールする。
Linux(Ubuntu) です。
git
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
.bashrc や .bash_profile などに以下の記述を追加
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
インストール可能な Ruby のバージョンを確認
$ rbenv install -l
$ rbenv install --list-all | grep 2.6
おまじない
$ sudo apt install libssl-dev
インストール
$ CONFIGURE_OPTS='--disable-install-rdoc' rbenv install 2.6.0
$ rbenv global 2.6.0
おまけ
「2.6.0」を「3.0.0-preview1」に変えれば、最新版の Ruby が試せる。
Steep
$ gem install steep
適当に「fizz」というフォルダを作る。
その中に「fizzbuzz.rb」「fizzbuzz.rbs」「Steepfile」を配置する。
「fizzbuzz.rb」は以下。普通の FizzBuzz です。
# 単純な REPL ならこれで十分 # $ ruby fizzbuzz.rb # irb なら # $ irb # > load 'fizzbuzz.rb' # > fizz(50) def fizz(n) (1..n).each{|k| if k % 15 == 0 p "FizzBuzz" elsif k % 3 == 0 p "Fizz" elsif k % 5 == 0 p "Buzz" else p k end } end # メイン関数としたもの if __FILE__ == $0 fizz(50) end
「Steepfile」は以下。
target :test do typing_options :strict check "*.rb" signature "*.rbs" end
なんかでたー $ steep check fizzbuzz.rb:11:6: NoMethodError: type=self, method=p (p "FizzBuzz") fizzbuzz.rb:13:6: NoMethodError: type=self, method=p (p "Fizz") fizzbuzz.rb:15:6: NoMethodError: type=self, method=p (p "Buzz") fizzbuzz.rb:17:6: NoMethodError: type=self, method=p (p k) fizzbuzz.rb:23:15: FallbackAny ($0) fizzbuzz.rb:24:2: NoMethodError: type=::Object, method=fizz (fizz(50))
今日はここまで。
(続きやらないかも......)
参考記事
Ubuntu で最新版の Ruby をインストール
https://qiita.com/kerupani129/items/77dd1e3390b53f4e97b2
macOS で Ruby 3.0.0-preview1 をインストール(Homebrew の ruby-build を使わない方法も)
https://qiita.com/scivola/items/ac83d8275ace1b4ed123
Ruby の型関連の情報まとめ
https://qiita.com/natsuokawai/items/6d652e3b72a79e019f22