여러개의 모델 객체를 하나의 form_for 헬퍼메소드에서 사용하는 것이 그렇게 쉽게 되지 않는 것 같습니다. 여기에는 약간의 꽁수가 필요하더군요.

설명을 위해서 리소스를 아래와 같이 가정하겠습니다.

class Person < ActiveRecord::Base

  has_one :contact, ;dependent => :destroy
  attr_accessible :age, :name, :sex, :contact_attribute

  def contact_attribute=(attribute)
    build_contact(attribute)
  end

end

class Contact < ActiveRecord::Base

  belongs_to :person
  attr_accessible :person, :address, :telephone

end

이전 글에서 레일스를 배포할 때 sub-URI로 서비스할 경우 이미지 링크가 보이지 않았던 것에 대한 해결책을 소개한 바 있습니다.

사실 이 문제가 발생하자마자, wmd-editor 개발자(https://github.com/chloerei)에서 이메일을 보내어 해결책을 질문했었는데, 답장이 왔더군요. 내용은 다음과 같습니다.

레일스 어플리케이션 배포에 대한 것은 Deploying Rails Application is Easy을 참조하면 됩니다.

정말 배포하기가 쉬운지는 각자가 느끼기에 달려 있는 것 같습니다. ㅎㅎㅎ

레일스 어플리케이션을 배포할 때 서버 설정하는 부분에서 두가지 옵션을 생각해 볼 수 있습니다.

하나는 메인 도메인명에 슬래시한 후에 어플리케이션명을 붙여서 사용하는 sub-URI 방식을 들 수 있고, 다른 하나는 포트를 추가하여 서비스하는 방법입니다.

Capistrano를 이용하여 레일스 어플리케이션을 배포하면서 공짜는 없다는 생각을 했습니다.

레일스 어플리케이션을 배포하는 것은 매우 까다로와 초보수준에서는 여간 어려운 일이 아닌 것 같습니다. 그러나 Passenger(aka “mod_rails”) 모듈을 아파치나 “Nginx” 서버에 붙여서 사용하면 쉽게 배포할 수 있어 수고를 덜어 주게 되었습니다. 그래서 저도 아파치+Passenger 조합으로 웹서버를 운영하고 있습니다. 그러나 레일스 공식 홈페이지에 나와 있는 레일스 배포에 관한 내용을 보면 “Capistrano” 젬을 이용한 레일스 어플리케이션의 배포가 관리적인 면에서 편리한 것 같습니다. 그리고 규모가 큰 서버군을 운영할 경우에는 더더욱 Capistrano를 이용해서 배포해야 특히 SCM과의 연계는 여러모로 도움이 될 것 같습니다.