2012-06-26 3 views
1

저는 루비와 레일 모두에 새로운 것이지만, 자바, 자바 스크립트 및 작은 파이썬에 대한 경험이 있습니다.즉석에서 레일 교체

나는 다양한 속성과 연결 (관계)을 가진 다른 것들 (모델)을 만들 수 있어야하는 웹 응용 프로그램을 만들려고합니다. Ruby on Rails는 일부 스키마가없는 백엔드 (mongodb, neo4j 등)를 지원하는 것처럼 보이므로 내 관심을 끌었습니다. 새로운 RoR 모델을 생성하고 속성과 관계를 추가 할 수있는 웹 인터페이스를 구축 할 수 있습니까? 웹 인터페이스의 사용자 작업을 통해 RoR 서버의 지정된 속성을 가진 새 모델로 변환 할 수 있습니다. 그리고 이러한 모델은 물론 어떤 식 으로든 유지되어야합니다 (아마도 루비 파일로 유지 될 수 있을까요?). 몇 가지 방법으로 CMS로 볼 수 있습니다.

내가 검색해야하는 도구 또는 개념은 무엇입니까?

그것은 당신이 질문하고 여러 가지 방법이 있지만 난 당신이 귀하의 요구 사항에 더 깊이 볼 것을 제안 무엇을 할 확실히 가능 오스카

+3

"가능한"과 "좋은 아이디어"는 두 가지 다른 점을 명심하십시오. – tadman

+1

당신은 그것을 할 수 있지만 (http://stackoverflow.com/a/10724280/479863), 데이터 모델을 먼저 재고해야한다고 생각합니다. 사용자가 새로운 테이블을 즉석에서 만들길 원하지만 플랫폼 내에 플랫폼을 구축하기 전에 두 번 생각해야합니다. –

답변

2

을 간주한다.

Ruby 이외의 언어에서 다른 설계자도 &과 비슷한 메타 모델링 CMS 프레임 워크를 구축하는 데 도움을주었습니다. 첫 번째 작업은 1999 년에 완료되었습니다. 브라우저에서 바로 모델과 관계를 생성하기위한 완전한 웹 GUI입니다. 이렇게해야만했던 이유는 우리가 사용하고 있던 기반 플랫폼이 모델을 만들고 MVC를 수행하는 것을 어렵게 만들었 기 때문에 프레임 워크 코드 & GUI 도구로 개발자를 도우려고했기 때문입니다.

Ruby는 내부 언어 인 domain specific languages에 적합합니다. 레일스는 내부 DSL을 많이 사용합니다 (특히 ActiveModel). 이 때문에 Rails 모델의 기본 코드를 작성하는 것이 훨씬 쉬우 며 다른 (더 높은) 수준의 추상화를 사용하게됩니다. 특히 GUI 툴은 라운드 트립으로 인해 좋은 모델을 만들 때 다루기가 매우 어렵습니다. 코드를 손으로 변경할 수 있어야하고 GUI에 변경 사항을 반영 할 수 있어야합니다. 힘든 문제입니다. 당신은 여전히 ​​GUI 기반의 메타 모델링 접근 방식으로 가고 싶은 경우, 두 가지 주요 경로에서 선택할 수있다, 말했다 모두와 함께

: 건물의 RoR의 메타 모델을 매개 변수화

  1. 특정 RoR 모델 생성하기

질문에 대한 표현을 보면 (2)에 관심이있는 것 같습니다. 이 경우, 이것에 대한 두 가지 표준 접근법이 있습니다 : 해석하거나 컴파일하십시오. 해석하면 모델을 설명하는 DSL을 만들고 실행하면 모델이 Rails 환경에서 인스턴스화됩니다. (Ruby 클래스는이를 정의하는 코드를 실행함으로써 정의됩니다.)이 코드를 컴파일하면 원하는 퍼시스턴스 프레임 워크를 사용하는 표준 RoR 모델을 코드 생성합니다. 그러면 문제는 코드를 어디에 보관할 것인가가됩니다. 디스크에 기록하고로드 할 수 있습니다. 예를 들어 데이터베이스에 저장할 수도 있습니다. 두 경우 모두 sourcify과 같은 보석을 볼 수 있습니다.

이러한 유형의 시스템을 구축하기로 결정했다면 MongoDB와 같이 Mongoid와 같은 NoSql 문서 지향 지속성 메커니즘을 사용하는 것이 좋습니다. 그 이유는 Rails가 SQL 스키마 관리를 제한적으로 지원하고 워크 플로 자동화 (기본 마이그레이션 이상)를 제공하기 때문입니다. 사람들에게 GUI를 제공하면 스키마가 더 자주 엉망이 될 가능성이 있습니다.따라서 스키마 마이그레이션 문제를 처리해야합니다. 문서 데이터베이스를 사용하면 조금 더 간단 해집니다 (문제를 게으른 방식으로 처리하기 위해 코드를 코드에 남겨두면 문제가 발생합니다). 관계형 데이터베이스는 일반적으로 그렇게하지 않습니다. 그들은 선행 스키마 마이그레이션 노력이 필요하며 이는 시스템에 많은 요구 사항을 추가하고 전체 개발자 워크 플로우에 대한 마찰을 불러옵니다.

행운을 빈다.

+0

위대한 물건! 공유 주셔서 감사합니다. – oskbor