21

Ruby on Rails 프로젝트에서 모델에 더 분리 된 시스템을 사용하려고합니다. 솔루션이 DataMapper 인 것처럼 보였습니다. 그러나 지난 한 해 동안 리포지토리가 업데이트되지 않았으며 Rails 4 프로젝트에 설치 될 때 새로운 Gem과 보석 버전 종속성 충돌이 발생합니다. 검색시 Rails 4에서 사용하는 콘텐츠가 표시되지 않습니다.Rails에서 DataMapper를 계속 사용할 수 있습니까?

지금 상태는 무엇입니까? 그것을 사용해야합니까, 아니면 다른 것입니까?

+4

왜 downvote?를 왜 이것이 매우 좋은 질문이 아닌지 설명해주십시오. – Jonah

답변

29

(하지만 나는 또한 Sequel을 고려할 것입니다.) EOL (유지 관리자로서 stated on the mailing list) 이외에도 모델 지속성이 필요한 많은 보석은 ActiveRecord를 지원하지만 DataMapper를 지원하는 것은 매우 드뭅니다. 따라서 직접 지원을 구현할 것을 기대합니다. 내 경험에 의하면 버그를 발견하면 DataMapper의 사용량/사용 포기로 인해 직접 수정해야 할 것입니다.

danmanstx가 언급했듯이, 유지 관리자는 대부분 DM2였던 Ruby Object Mapper (ROM)에 집중되어 있습니다. 일부 ROM은 기능이 완벽하지만 아직 출시일이 AFAIK가 아닙니다 (roadmap 참조).

관련 DM 보석의 release-1.2 브랜치를 보면 잠시마다 마이너 업데이트가 발생하는 것을 볼 수 있습니다. 그러나 많은 문제가있는 across the DataMapper gems, 2 년 넘게 많은 사람들이 DataMapper 메인테이너가 충분하지 않기 때문에 해결되지 않을 것입니다. (그리고 나는 새로운 것을 원한다고 비난하지 않습니다!) .

최신 버전의 RubyGems 버전 DM 젬에 대한 버전 충돌이 있습니다. 최신 안정 버전의 DM을 사용하고 싶다면 release-1.2 DM 보석의 브랜치를 사용해야합니다. 당신은 내가 속편 멀리 액티브에서 마이그레이션됩니다 DataMapper, FWIW을 고려하는 경우

gem 'dm-core', git: 'git://github.com/datamapper/dm-core.git', branch: 'release-1.2' 
+0

우수 답변, 감사합니다 @Abe. 나는 ActiveRecord 위에 Domain Model/Data Mapper 패턴을 성공적으로 구현했다고 생각합니다. 이 간단한 것이 Rails에서 지원된다면 좋을 것입니다. * 어깨를 으한다. – Jonah

3

DataMapper가 DataMapper2로 변경되고 ruby ​​object mapper로 변경되었습니다.

는 여기에서 찾을 수 있습니다 https://github.com/rom-rb/rom 내 직장에서 DataMapper 매일 사용하는 사람이, 당신이 당신의 스키마를 제어하지 않는 레거시 데이터베이스에 연결되지 않는 액티브 지키는 추천으로

+0

지금은 쓸만한 프로젝트가 아니십니까? – Jonah

+1

Datamapper (https://github.com/datamapper/dm-core)가보다 적극적으로 업데이트되는 이유는 무엇입니까? – AlexQueue

+0

ROM은 여러 보석에 크게 의존합니다. 개발자는 일반적으로 ROM보다는 그 작업을합니다. – SystematicFrank

12

당신은 정말 속편 살펴 보셔야합니다.

그러나 Rails 이데올로기가 마음에 들면 ActiveRecord보다 더 마찰이 적을 것입니다.

범위, 규칙 조건, 관계 vs 연관, 중첩 된 속성, 레코드 초기화, 문자열 기반 순서 지정, 검색 문자열, 해시 등의 진화를 처리 한 후에도 Rails 커뮤니티와 개발자의 노력에 경의를 표할 필요가 없습니다. arel, 쿼리를 쉽게 표현하고 작성할 수 없거나 스코프를 효과적으로 재사용 할 수 없거나, 관련 모델 버그를 검증 할 수 없거나, 부모와 자녀 간의 연관성을 세우거나, 문서화가 잘되어 있지 않으며, 겔화가 잘되지 않는 경우, ORM 속편처럼.

마찬가지로 레일스의 이데올로기 (부끄러워하지 않는)를 바라보고 현대 웹 프레임 워크에서 개념을보다 깨끗하게 선택하고 선택하는 것이 더 나을지도 모릅니다. Rails 4는 나를위한 마지막 hoorah, 안녕 Sinatra/Padrino/Sequel, Postgres/Redis/Solr 및 Backbone/Marionette/Eco/Coffeescript ... 내 의견이있는 웹 개발 프레임 워크 :

1

DataMapper를 달성하는 또 다른 보석이 있습니다. 루비에서 디커플링.그것은 Datamappify이라고 불렀습니다.

Virtus, rom-rbSequel (이미이 스레드에서 언급 됨)이라는 또 다른 멋진 프로젝트가 개발 중이며 도움이 필요합니다.

루비스트는 루비와 함께 소프트웨어를 연구하고 다른 접근법을 시도하는 것이 중요합니다. 우리는 Padrino.rb, 포도, 랙 등등이 있습니다.

4

제 작품에서 우리는 DataMapper에 많은 문제가 있습니다. 결국 많은 연구와 개발자들과의 대화 끝에 막 다른 프로젝트 였음을 깨달았습니다. 나는 우리가 여기를 포기하기로 결정 이유를 설명 :

http://opensourceame.com/why-we-abandoned-ruby-datamapper/