# ActiveSupport を pry 上で試す

pry 上で、Active Support を試します。

$ pry
[1] pry(main)>

# Active Support

まず、Active Support の すべてのコア拡張機能を読み込みます。

[2] pry(main)> require 'active_support'
=> true
[3] pry(main)> require 'active_support/core_ext'
=> true

# active_support/core_ext だけではだめ

先に active_support/core_ext を読み込もうとすると、以下のようになりました。

[1] pry(main)> require 'active_support/core_ext'
NameError: uninitialized constant ActiveSupport::Autoload
from /Users/user_name/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/activesupport-5.2.2/lib/active_support/number_helper.rb:5:in `<module:NumberHelper>'

# #try

#try を使うと、 以下のようなことができます。

&.#try は、 少し挙動が違います。

参考: Ruby の &. と #try の違い - Secret Garden(Instrumental)

hash から、キー message の値の取り出し方を いろいろ試してみました。

[1] pry(main)> hash = { message: 'test message' }
=> {:message=>"test message"}
[2] pry(main)> hash[:message]
=> "test message"
[3] pry(main)> hash.[] :message
=> "test message"
[4] pry(main)> hash.try(:[], :message)
=> "test message"
[5] pry(main)> hash.try(:[], :message).split(' ')
=> ["test", "message"]
[6] pry(main)> hash.try(:[], :message).try(:split, ' ')
=> ["test", "message"]

Hash の挙動が気になったので、試してみた。

[1] pry(main)> test = { 'text': 'message' }
=> {:text=>"message"}
[2] pry(main)> test[:text]
=> "message"
[3] pry(main)> test['text']
=> nil
[4] pry(main)> test = { 'text' => 'message' }
=> {"text"=>"message"}
[5] pry(main)> test['text']
=> "message"
[6] pry(main)> test[:text]
=> nil

# Rails

Rails では、 すべての Active Support を読み込みます。

Rails でよく使っている、blank? present? presence などが Active Suppot の提供するメソッドであることを知りませんでした。

# 参考