프로그래밍/Ruby2008.11.12 23:53
http://clarkware.com/cgi/blosxom/2007/02/24

이걸보고 하면 간단

특징:
파일시스템에 올린 다음 이미지 정보들은 DB에 갖고 있음.
파일시스템 말고 DB에 바이너리로 넣을 수도..


Posted by 시난
프로그래밍/Ruby2008.10.12 23:29
레일스 플러그인 설치를 하다보면
git:// 로 시작되는 곳을 종종 볼 수 있다.

근데 windows에선 그냥 안 되기 때문에
다음과 같은 방법으로 처리해야 제대로 설치가 된다.

source:
http://jamie.ideasasylum.com/2008/08/installing-rails-plugins-with-git-on-windows/

Go read this introduction to Git on Windows and install the command-line package of msysgit. Now, if you’ve got Rails 2.1 or later you should be able to do

ruby script\plugin install git://github.com/thoughtbot/shoulda.git

but it will fail with various errors, probably including “Plugin Not Found”. Instead, try:

ruby script\plugin install http://github.com/thoughtbot/shoulda.git/




Posted by 시난
TAG git, plugin, Rails
프로그래밍/Ruby2008.10.10 00:10

예를 들어
users 테이블과
clubs 테이블이 있다.

그 관계를 지칭하는
users_clubs라는 테이블이 있어서 M:N의 정보를 넣는다고 하자.

users.clubs << club1
users.clubs << club2


club1의 association을  제거할 땐 이렇게 하면 된다.
users.clubs.delete( club1 )


그럼 club1의 정보는 지워지지 않고
users_clubs의 관계만 지워지게 된다.



"collection.delete(object, …) - removes one or more objects from the collection by removing their associations from the join table. This does not destroy the objects."




Posted by 시난
프로그래밍/Ruby2008.10.05 22:56

테이블에 기본키가 하나여야 좋지만
어떤 경우에는 두 개 이상의 키가 구성이 될 경우가 있다.

이럴 때 어떻게 하면 중복성을 검증할 수 있을까?
정답은

:scope를 사용하는 것이다.

validates_uniqueness_of :col1, :scope => [:col2]


3개 이상의 키라면 어떻게 할까?

다음과 같다



validates_uniqueness_of :col1, :scope => [:col2, :col3]
Posted by 시난
프로그래밍/Ruby2008.09.10 02:32
프로그래밍/Ruby2008.09.10 02:25
참고 사이트

 

인증

ruby script\plugin install -r 3072 http://svn.techno-weenie.net/projects/plugins/restful_authentication/

 

트러블 슈팅

acts_as_state_machine 메소드가 정의되지 않았다고 나온다.

다음과 같이 플러그인을 인스톨하면 해결된다.


> script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/



설치 후기

비교적 깔끔하게 설치 및 연동이 완료된다.

자신이 사용하는 stmp 서버 정보를 잘 입력하고나면..


사용자가 회원가입 후 자동으로 메일이 발송되며

메일 발송 한 후 활성시키는 URL을 클릭 하면

사용자의 상태가 pending 에서 active로 변경된다.


그 다음부터는 정상적인 로그인이 가능하다.

이 글은 스프링노트에서 작성되었습니다.

Posted by 시난
프로그래밍/Ruby2008.09.10 02:23
참고 링크

 

적용하기

레일스에서 태그 기능을 추가하는 것은 상당히 간단하다.

직접 테이블을 만들어서 해도 되겠지만

http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids

acts_as 방법으로 누군가 훌륭하게 만들어놓았다.

여유되는 사람은 기부도 하자(?)

 

이 대로 적용이 끝나고 나면

조금 업그레이드 시킬 필요가 있다.

http://www.juixe.com/techknow/index.php/2006/07/15/acts-as-taggable-tag-cloud/

이 글을 보고 업그레이드 한다.

 

그럼 훌륭한 태그 시스템이 갖추어진 것을 볼 수 있다!

 

 

이 글은 스프링노트에서 작성되었습니다.

Posted by 시난
프로그래밍/Ruby2008.09.04 00:14

일단 좋은 글이 2개 있으니 따라하면 됩니다;

1. http://www.aproxacs.com/122
2. http://www.buggymind.com/147

2분이 잘 정리해두셨네요.
덕분에 쉽게  적용할 수 있었습니다. ^^; 감사합니다.


Posted by 시난
프로그래밍/Ruby2008.08.19 02:07
루비의 DateTime 형식은
문자열 형식으로 찍어보면 다음과 같다.

2008-08-17T01:47:44+0900


그러나
W3C의 Date Time Format (http://www.w3.org/TR/NOTE-datetime)
형식과 유사하지만 뒷 부분이 다르다.

Formats

Different standards may need different levels of granularity in the date and time, so this profile defines six levels. Standards that reference this profile should specify one or more of these granularities. If a given standard allows more than one granularity, it should specify the meaning of the dates and times with reduced precision, for example, the result of comparing two dates with different precisions.

The formats are as follows. Exactly the components shown here must be present, with exactly this punctuation. Note that the "T" appears literally in the string, to indicate the beginning of the time element, as specified in ISO 8601.

   Year:
      YYYY (eg 1997)
   Year and month:
      YYYY-MM (eg 1997-07)
   Complete date:
      YYYY-MM-DD (eg 1997-07-16)
   Complete date plus hours and minutes:
      YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
   Complete date plus hours, minutes and seconds:
      YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
   Complete date plus hours, minutes, seconds and a decimal fraction of a
second
      YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)

where:

     YYYY = four-digit year
     MM   = two-digit month (01=January, etc.)
     DD   = two-digit day of month (01 through 31)
     hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
     mm   = two digits of minute (00 through 59)
     ss   = two digits of second (00 through 59)
     s    = one or more digits representing a decimal fraction of a second
     TZD  = time zone designator (Z or +hh:mm or -hh:mm)

즉 Ruby의 '2008-08-17T01:47:44+0900' 형식이
W3CDTF로 변환되면 '2008-08-17T01:47:44+09:00' 처럼 되야 하는데

뒷 부분의 TZD(time zone designator) 형식이 다르기 때문에


com.adobe.utils.DateUtil.parseW3CDTF( '2008-08-17T01:47:44+0900' ); 을 사용할 때
문제가 발생한다.

해결법1
DateUtil.parseW3CDTF()  사용말고
DateFormatter 를 사용해 처리한다.
(time zone정보는 파싱할 수 없으므로 따로 해야함 -_-)

해결법2 (Ruby쪽)
시간 출력해주는 부분을 바꿔야 한다.
ex>
> require 'date'
> Date.today.to_s
=> "2006-08-21"

> DateTime.now.to_s
=> "2006-08-21T13:08:34-0700"

> DateTime.now..to_s[0..18]
=> "2006-08-21T13:14:15"
# Or use strftime. This example is from ActiveRecord:
user.created_at.strftime("%Y-%m-%d %H:%M:%S")

p.s. 같이 고생한(?) 찬익 쌩큐


참고:
http://whynotwiki.com/Ruby_/_Dates_and_times
http://flex2colombia.wordpress.com/2007/02/18/dateformatter-parsedatestring-replacement/
http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=formatters_094_6.html
http://blog.flexexamples.com/2008/02/02/parsing-iso-dates-with-flex-and-actionscript/



Posted by 시난