문제

내가 Rails와 Django를 처음 찾아보기 시작했을 때 나는 Rails가 과도한 "마법"(누출 추상화)을 사용하는 블랙 박스라고 생각한 Django 개발자들에 의해 레일에서 벗어났습니다. 레일을 더 탐색했을 때 나는 이것이 스캐 폴딩을 사용하지 않고 레일에서 사용자 정의를 달성하는 방법을 모른다는 사실에 근거한 정보가없는 가정인지 궁금합니다. 스캐 폴딩 자체는 많이 숨길 수 있지만 프로젝트없이 프로젝트를 만드는 방법을 이해하면 Rails는 Django만큼 사용자 정의 할 수있는 것 같습니다. 이것이 내 측면에서 또는 Rails의 '마법'비평가의 일부에서 오해입니까?

도움이 되었습니까?

해결책

Rails는 Ruby의 Metaprogramming 시설을 광범위하게 사용하여 당신을 위해 많은 grunt 작업을 수행하지만 마법은 없습니다. 결국에는 단지 코드가 있으며 충분한 시간과 노력이 주어지면 이해할 수 있습니다.

스캐 폴딩은 항상 모델에서 CRUD 작업을 빠르게 수행하면서 일어나고 실행하는 방법으로 의도되었습니다. 의도는 항상 스캐 폴딩을 실제 생산 코드로 대체해야한다는 것이 었습니다.

다른 팁

나는 적어도 두 플랫폼에 대한 합리적인 수준의 이해를 보여줄 수 없으며, 가능한 사람은 거의없는 사람이 없다면 장고에 대한 루비이스트의 의견보다 더 이상 레일에 대한 파이토나스타의 추천을받지 않을 것입니다.

이 프레임 워크는 (Django 측에서 제한된 이해를 위해) 유사한 아키텍처를 가지고 있지만 다르게 성장하고 다른 언어의 강점을 활용합니다.

나는 Rails가 상당한 양의 "마법"을 가지고 있다는 데 동의합니다. 컨벤션-이후의 문제는 프레임 워크의 많은 부분입니다. 나는 그것이 파이썬 전문가에게 어떻게 자리를 차지할 수 있는지 알 수 있으며, 아마도 아마도 공정한 것입니다. 루비의 상대적 강점 중 하나는 마술을 일으키는 메타 프로그래밍 기능입니다. 아마도 그 때문에 일반적으로 그보다 보인다 원숭이 패치 파이썬에서는 의심스러운 것으로 보이지만 루비에서는 평범합니다. 더 나은 빈도가 아니라 다릅니다.

솔직히 당신은 어느 플랫폼에서도 개발하는 좋은 시간을 가질 수 있다고 생각합니다. 각각 간단한 앱을 구축하고 가장 좋아하는 앱과 함께 2 ~ 3 일을 보내는 것이 좋습니다. 나는 당신이 선택한 것과 그 이유에 대한 피드백을보고 싶습니다.

Merb는 무엇이라고 생각하십니까? 레일에서 너무 많은 마법에 반항하는 철도 개발자의 깃발입니다.

Rails 3은 마법을 줄이고 Merb의 많은 부분을 당기고 물건을 청소하려는 시도입니다.

이제 마법이 너무 많습니까? 어쩌면 이것을 기억하십시오. Rails는 기본적으로 웹 개발의 프레임 워크로 함께 제공되는 DSL (도메인 별 언어) 모음입니다. 그렇기 때문에 너무 깨끗한 이유, 노선, 템플릿 또는 orm 등의 언어입니다. 깨끗한 DSL을 만들려면 루비를 확장해야합니다.

Django는 그렇게하지 않으며 파이썬 방법이 아닙니다. 더 낫거나 나쁘지 않고 뚜렷하게 다릅니다.

이제 당신은 물었다, 레일에 마법이 너무 많습니까?

기억하다 Arthur C Clark의 세 번째 예측 법칙: 충분히 진보 된 기술은 마술과 구별 할 수 없습니다.

아마도 당신의 개발자 친구는 Rails가 너무 고급 기술이기 때문에 편안하게 사용하기에 너무 진보 된 기술이라고 말했을 것입니다.

나를 위해 나는 Rails의 소스를 읽고 무슨 일이 일어나고 있는지 알아낼 수 있습니다. 물론 그것은 장소에서 복잡하지만, 나는 항상 소스를 걸어 가고, 매우 광범위한 단위 테스트를 읽고, 그것이 어떻게 작동하는지 알 수있었습니다. 커널도 복잡하지만 우리는 그 근거에서 그것을 사용하는 것을 거부하지 않습니다.

이 질문의 변형에 대한 과거의 답변을 읽는 데 시간을 보내는 것이 유용 할 수 있습니다 (예를 들어, 내 견해를 설명했습니다. 여기).

나는 어떻게 레일을 블랙 박스로 볼 수 있는지 알지 못합니다. 당신은 출처가 있습니다. 루비 중 일부는 약간 까다 롭고 메타 프로 그램은 추적하기 어렵게 만들 수 있지만 모든 것이 볼 수 있습니다. 또한 스캐 폴딩 비판은 생성 된 스캐 폴드보다는 오래된 스캐 폴드에 대해 이야기하지 않는 한 의미가되지 않습니다.

나는 djangoist가 정보가 없어서도 Rails가 너무 까다로운 루비와 루비 클래스를 조작해서는 안되는 몇 가지를 사용하는 것과 같은 다른 것을 의미한다고 생각합니다. 그것은 만들 수있는 경우입니다.

물론 그들은 Djangos가 호주에서 아기를 먹을 것이라고 확신하기 때문에 실제로 Badmouth Rails를 사용해서는 안됩니다.

"공정"이라는 개념이 여기서 잘못되었다고 생각합니다. 모두 맛의 문제입니다. 나는 Rails Monkey가 Ruby의 빌드 인 유형을 패치한다는 사실에 대해 끔찍했습니다 ( "5.days"와 같은 것들). 나는이 마법을 고려한다. 일부 루바이스트는이를 견고한 엔지니어링으로 간주 할 수 있습니다.

Rails가 언어 런타임에 많은 명백한 일을한다고 말하는 것이 목표라고 생각합니다. 당신 이이 좋은 사람이나 나쁜 생각이라면 당신에게 달려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top