본문 바로가기

Dev/Ruby3

루비 이스케이핑 함수 비교 루비에서 S3에서 다운받는 파일의 이름을 변경하려면 Content-Disposition 값을 설정해주어야 합니다. 영어라면 아무 문제가 없겠지만, 우리가 쓰는 한글은 여러가지 대응해야 할 문제들이 많습니다. 띄어쓰기가 +가 된다든가, 띄어쓰기의 %20이 그대로 출력된다던가, 쉼표가 들어간 경우 오류가 발생한다든가 다양한 상황이 발생합니다. 누군가의 삽질을 막기 위해, 한국어 레일즈 사이트들에서 발생하는 이슈를 막기 위해 이스케이핑 함수를 정리해 두겠습니다. CGI.escape 띄어쓰기가 +로 변환됨. URI.encode ,가 변환되지 않음 ERB::Util.url_encode 문제가 발생하지 않는 제일 좋은 함수. 쉼표, 띄어쓰기에 대한 대응이 잘 되어 있다. 참고한 것들 https://engineeri.. 2022. 10. 25.
Rails 5.2의 쓰레기 기능: Active Storage Ruby on Rails 5.2에서 Active Storage라는 새로운 기능이 추가되었습니다. 기존 Paperclip등의 Gem에서 수행하던 파일 저장 기능이 레일즈 자체에서 구현되었죠. GCS, S3, ASS등 다양한 provider에 연결해서 파일을 저장할 수 있다는 점도 확실히 매력적입니다. 저 역시 마인리스트의 Rails 버전을 5.2로 올리면서 Paperclip Gem이 Active Storage가 나온다면서 deprecation할 예정이라고 하길래, Paperclip에서 Active Storage로 마이그레이션을 시도했었습니다. 파일 이전 스크립트까지 다 짜고 실제 이전까지 테스트해봤지만, 싹 다 롤백하고 다시 Paperclip으로 돌아왔습니다. 이유가 무엇일까요? 치명적인 버그 예를 들어 .. 2019. 5. 4.
은는이가(ununiga) gem, 레일즈에서의 i18n 조사 처리 한글이 정말 잘 만든 언어이긴 하지만, 프로그래밍할 때는 항상 골치거리에요. 많은 라이브러리들이 영어를 기반으로 만들어진 바람에 한국어로 번역할 때 "(이)가"처럼 엄청 부자연스러운 부분이 생기거든요. 예를 들자면 "말똥이(이)가 블로그에 글(을)를 쓰고 있습니다"처럼 말이죠. 이름 뒤에 "님"자를 붙여서 "말똥이님이" 처럼 처리하는 방법도 있겠지만, 몽키패치일 뿐이에요. 루비 온 레일즈에서도 마찬가지입니다. "(이)가"를 넣자니 부자연스럽고 난감하죠. 그럴때 이 gem을 사용하면 됩니다. 설치하기 rails 기반 i18n 기능에 통합시켜버리려면 아래 코드를 앱 실행 부분에 추가하시면 됩니다. (Initializer나 application.rb, environment config) I18n::Backen.. 2018. 1. 18.