[Ruby] Lazy Enumerator 사용하기

1. lazy enumerator란? Lazy Enumerator는 루비 2.0 에서 처음 등장한 기능으로, method chain을 사용할 때 chain을 효율적으로 수행할 수 있도록 도와준다. 이 기능을 알고 난 후에 코드의 양은 줄어들었고 가독성은 오히려 늘어나게 되었다. 매우 좋다. . 2. 사용법 사용법은 어렵지 않다. 기존 enumerator를 사용하는 것처럼 take(n).to_a를 하면 앞에서부터 10개의 아이템을 array로 만들어준다 arr = [1, 3, 5, 2, 4, 6] arr.lazy.select { |i| i <= 3 }.take(2).to_a # => [1, 2] arr.lazy.select { |i| i <= 3 }.first(2) # => [1, 2] .. 3. 비교 lazy를 사용하지 않을 때와 비교 1부터 무한대까지의 숫자 중, 3의 배수를 2개 ...

June 12, 2016 · Juyeong Lee

레일즈 암호화 (Rails Encrypt, Decrypt)

레일즈에서는 암호화를 위해 ActiveRecord에서 기본으로 제공하는 라이브러리를 사용할 수 있다.. 암호화 secret = Rails.configuration.secret_key_base encryptor = ActiveSupport::MessageEncryptor.new(secret) encrypted = encryptor.encrypt_and_sign('value') # => bXRidS92aVpUUG1YVEMwd3V4VkUrUT09LS1hbkUzQzUyTjNlSzBiL2xlaTI1WDNnPT0=--61257eaa178fe8c363e83c8cb966a39c4820fa47 복호화 secret = Rails.configuration.secret_key_base encryptor = ActiveSupport::MessageEncryptor.new(secret) encryptor.decrypt_and_verify(encrypted) # => 'value' MessageEncryptor 위의 예제에서 사용된 MessageEncryptor는 ActiveRecord에서 제공되며, 암호화를 위한 secret key는 레일즈 설정의 secret_key를 사용했다. (다른 key를 만들어서 사용해도 된다) secret = SecureRandom.hex(64) signature_key = SecureRandom.hex(64) serializer = JSONSerializer.new # 다른 serializer를 사용해도 된다. 기본은 Marshal ActiveSupport::MessageEncryptor.new(secret, signature_key, serializer: serializer) Rails3 Rails3에서 secret은 Rails.configuration.secret_token를 사용하면 된다. 참고자료 http://api.rubyonrails.org/classes/ActiveSupport/MessageEncryptor.html

March 14, 2016 · Juyeong Lee