피해야 할 10가지 커먼 레일 프로그래밍 실수

게시 됨: 2023-08-22

일반적으로 "Rails"로 불리는 Ruby on Rails는 "CoC(Convention Over Configuration)" 및 "DRY(Don't Repeat Yourself)" 원칙을 강조하면서 웹 애플리케이션 개발의 패러다임을 완전히 바꿔 놓았습니다. 370만 개 이상의 활성 웹사이트가 Ruby on Rails를 프레임워크로 사용하고 있습니다.

이 프레임워크를 통해 모든 Ruby on Rails 개발 회사는 더욱 단순하면서도 강력하고 확장 가능한 애플리케이션을 제작할 수 있게 되었습니다. 그러나 Rails가 제공하는 수많은 기능을 고려하면 가장 능숙한 개발자라도 때때로 어려움을 겪을 수 있습니다.

다음은 10가지 일반적인 Rails 프로그래밍 실수와 해결 방법입니다.

1. 콜백의 남용

실수 : Rails는 개발자에게 강력한 콜백 기능을 제공합니다. 이를 통해 개체의 수명 여행 중 특정 이벤트의 자동화가 용이해집니다. 일부 프로세스를 간소화하기는 하지만 과도한 의존으로 인해 미로 같은 모델이 생성될 수 있습니다.

방지 방법 : 단일 모델 내에서 여러 콜백을 엮으면 충돌이 발생하거나 산발적으로 활성화될 수 있습니다. 이러한 복잡성이 증가함에 따라 모델을 유지 관리하는 것이 어려운 작업이 됩니다.

이상적인 접근 방식은 무엇입니까? 단일 책임 원칙을 준수하여 각 클래스에 단일 변경 이유가 있는지 확인합니다. 콜백이 모델의 기본 기능에서 벗어나는 경우 서비스 개체나 데코레이터에 더 적합할 수 있습니다.

2. 데이터베이스 무시

실수 : Rails는 완벽한 데이터베이스 통합을 자랑하므로 종종 기본 작업이 보이지 않는 것처럼 느껴집니다. 그러나 이러한 원활한 환경으로 인해 쿼리가 최적화되지 않거나 속도가 저하되는 경우가 있습니다.

피하는 방법 : Rails가 데이터베이스 특성을 연결하는 데 많은 노력을 기울이고 있지만 백엔드를 이해하는 것은 여전히 ​​중요합니다. N+1 쿼리와 같은 함정을 주의하세요.

'총알' gem과 같은 도구는 이러한 문제를 신고하는 데 도움이 될 수 있습니다. 또한 데이터베이스 인덱싱 메커니즘에 대해 알아보세요. 느린 쿼리에 대한 로그를 주기적으로 샅샅이 조사하여 데이터베이스 성능을 미세 조정하십시오.

3. 테스트를 작성하지 않거나 실패한 테스트를 무시

실수 : Rails의 테스트는 애플리케이션 기능에 대한 청사진을 제공하여 작업을 재구성하는 동안 쿠션을 제공합니다. 그러나 때때로 테스트를 무시하거나 실패를 무시하는 일이 발생할 수 있습니다.

피하는 방법 : 테스트 없이 앱을 만드는 것이 처음에는 편리해 보일 수 있지만, 나중에는 잠재적인 문제의 씨앗이 됩니다. 철저한 테스트 범위를 목표로 RSpec 및 MiniTest와 같은 테스트 도구를 수용합니다. 평가를 위해 SimpleCov와 같은 도구를 활용하고 실패한 테스트 수정의 우선순위를 정하세요.

4. 검증 우회

실수 : Rails의 견고한 검증 메커니즘은 종종 개발자의 동맹이 됩니다. 그러나 update_attribute와 같은 메서드는 이러한 유효성 검사를 회피하여 잠재적으로 데이터 이상 현상을 일으킬 수 있습니다.

피하는 방법 : 데이터 신성함은 협상할 수 없습니다. Rails 검증은 데이터가 데이터베이스에 배치되기 전에 데이터 일관성을 보장합니다. update 및 update_attribute와 같은 메소드의 미묘한 차이를 완전히 이해하세요. 유효성 검사를 우회하는 것이 꼭 필요한 경우가 아니라면 기존 경로를 고수하고 예외를 엄격하게 문서화하세요.

5. 자산 파이프라인을 이해하지 못함

실수 : Rails의 자산 파이프라인은 CSS 및 JavaScript와 같은 자산을 최적화하도록 설계되었습니다. 구성이 잘못되면 자산 전달이 방해를 받거나 성능에 부정적인 영향을 미칠 수 있습니다.

방지 방법 : 배포 문제를 방지하기 위해 자산 파이프라인의 작동 방식을 자세히 살펴보세요. 생산 단계에 대한 엄격한 사전 컴파일 방식을 보장합니다. 최적화 후 원활한 자산 연결을 위해 image_tag와 같은 Harness Rails 도우미.

6. 시간이 많이 걸리는 작업에 백그라운드 작업을 사용하지 않음

실수 : 이메일 발송과 같은 실시간 작업 중에 사용자를 기다리게 하는 것은 최고의 사용자 경험이 아닙니다.

피하는 방법 : 웹 애플리케이션은 응답성과 동의어가 되어야 합니다. 데이터 계산이나 이메일 전송과 같은 까다로운 작업을 백그라운드 작업으로 오프로드하세요. Sidekiq 또는 Resque와 같은 도구는 이러한 작업에 맞게 맞춤 제작되어 기본 앱이 민첩하고 사용자 중심적으로 유지되도록 보장합니다.

7. 보석을 너무 많이 사용하다

실수 : Rails 생태계는 풍부한 보석 세트를 자랑하지만 이를 무분별하게 추가하면 애플리케이션이 부풀어 오르고 잠재적인 보안 위험이 발생할 수 있습니다.

피하는 방법 : 보석은 환상적이며 성가신 문제를 해결하는 지름길을 제공합니다. 그러나 더 많은 것이 항상 더 나은 것은 아닙니다. 애플리케이션 주머니에 밀어 넣는 각각의 보석은 체인에 또 다른 링크를 추가하는 것과 같습니다. 이는 약한 링크일 수도 있습니다.

보석을 사용하기로 결정하기 전에 잠시 멈추고 생각해보세요. 업데이트 빈도, 지원 커뮤니티, 유지 관리 수준을 살펴보세요.

취약점을 발견하려면 Bundler 감사와 같은 도구를 사용하면 됩니다.

8. 데이터베이스 열을 인덱싱하지 않음

실수 : 최적의 성능을 위해서는 검색 또는 조인과 관련된 데이터베이스 열에 인덱싱이 필요합니다. 이를 무시하면 작업 속도가 크게 느려질 수 있습니다.

방지 방법 : 애플리케이션이 성숙해지고 데이터가 많아지면 데이터베이스의 민첩성을 유지하는 것이 중요합니다. 데이터베이스를 잃어버리게 만드는 대신 데이터베이스에 지도를 제공하는 것으로 인덱싱을 생각하십시오.

조인 또는 검색 작업과 관련된 열의 우선 순위를 지정합니다. 확실하지 않은 경우, 쿼리가 어떻게 수행되고 있는지에 대한 조감도를 제공할 수 있는 Rails_db와 같은 도구가 있습니다.

9. 기본 오류 페이지 사용

실수 : Rails의 기본 오류 페이지는 개발 환경에서는 유용하지만 프로덕션에서는 불필요한 정보를 노출할 수 있으며 사용자에게 친숙하지 않습니다.

피하는 방법 : 실제 프로덕션 환경에서는 사용자 경험과 보안의 균형을 맞추는 것이 가장 중요합니다. 표준 레일 오류 페이지는 일부 민감한 시스템 정보를 의도치 않게 깜박일 수 있습니다.

게다가 우연히 발견한 사용자에게는 그다지 위안이 되지 않습니다. 맞춤형 오류 페이지를 디자인하여 애플리케이션을 새롭게 바꿔보세요. 이는 유용하고 신중하며 안심할 수 있어야 하며 사용자가 경보를 울리지 않고 탐색할 수 있도록 도와야 합니다.

10. 보안 모범 사례 무시

실수 : Rails는 보안 기능이 많이 내장된 요새와 같습니다. 하지만 제대로 사용하지 않으면 문을 활짝 열어 놓을 수도 있습니다.

피하는 방법 : 웹 위협은 교활한 SQL 주입부터 악의적인 크로스 사이트 스크립팅에 이르기까지 모든 형태와 규모로 나타납니다. Rails는 이러한 많은 위협을 방어하기 위해 SQL 매개변수화 및 CSRF 토큰과 같은 도구를 제공하지만 작은 실수로 인해 취약해질 수 있습니다.

브레이크맨과 같은 도구는 잠재적인 보안 위험을 지적하는 믿음직한 정찰병이 될 수 있습니다. 보안은 항상 최우선 순위여야 하며 정기적인 감사 및 검토는 강력한 보안 상태를 유지하는 데 도움이 될 수 있습니다.

결론

Ruby on Rails는 믿을 수 없을 만큼 강력하고 개발자 친화적이지만 복잡함이 없는 것은 아닙니다. 위의 실수를 피하면 보다 효율적이고 유지 관리가 가능하며 안전한 Rails 애플리케이션을 만드는 길을 걷게 될 것입니다. Rails를 마스터하는 열쇠는 기능을 이해하는 것뿐만 아니라 잠재적인 위험을 인식하고 피하는 데에도 있다는 것을 기억하세요.