본문 바로가기

ruby

(9)
Rails) flash 사용법 flash 는 Rails Application에서의 Action과 Action간에 정보를 공유하기 위해 만들어진 기능이다. HTTP Protocol은, 기본적으로 상태가 유지되지 않는 프로토콜인데, 만약 특정 액션에서 에러가 발생하여, Browser가 다른 액션으로 Redirect되는 경우, 이전 액션에서 발생한 Error Message를 확인할 수 있는 방법 이 없게 된다. (여기서 Flash 는, Flash MX 등에서 사용하는 Flash가 아니다) Flash기능은, 이런 경우에 이전 Action에서, 다음 액션으로 정보를 넘겨주는 것을 가능하게 한다. (이상 '웹 개발 2.0 루비온 레이슬' -황대산 지음 에서 발췌) 그러면, 사용법을 알아보자. app/controller/user_controlle..
[Ubuntu] HOWTO: Build a Ruby (Rails) Environment # 다음 명령들을 수행한다. apt-get install ruby apt-get install rubygems gem update --system gem update apt-get install ruby1.8-dev apt-get install libzlib-ruby apt-get install libyaml-ruby apt-get install libdrb-ruby apt-get install liberb-ruby apt-get install rdoc apt-get install zlib1g-dev apt-get install libopenssl-ruby # Mongrel 설치 gem install daemons gem_plugin mongrel mongrel_cluster --include-depen..
[Ruby] XML Builder 와 REXML Ruby(Rails)을 통해서, XML Parsing과 Build시 다음 두개의 Class(Or Module)을 사용한다. 1. Builder Ruby Class중에 "Builder"을 통해서, XML 을 만들어 낼 수가 있다. (참고 = XML.com의 "Createing XML with Ruby and Builder") 2. REXML XML Parser중 작고, 빠른편이다. (참고 = Germane Software의 XML소개) 사용법은 위 두개 참고 사이트를 보면 된다. 여기서 언급할 것은, Builder을 통해서 XML을 생성 할 때, 주로 String으로 XML을 담아왔었다. 다음은 이를 파일로 담아오는 방법이다. require 'builder' file = File.new("result.xm..
[Ruby] Sort 방법 (Struct - 구조문 이용) 1. 기본 Hash 정렬 참고] Ordered Hash는 , Hash에 값을 대입시 순서대로 저장을 한다. (여기 참고) require 'ordered_hash' h = OrderedHash.new(0) h["1st"] = 5 h["2nd"] = 3 h["3th"] = 7 #Hash의 Value의 내림차순으로 정리하여 배열로 지정 a = Array.new(0) a = h.sort { |a,b| b[1]a[1] } [결과] a = [["3th",7],["1st",5],["2nd",3] ] 2. Struct Type 정렬 require "ordered_hash" h1 = OrderedHash.new(0) s1 = Struct.new(:name, :zip) h1["2020"] = s1.new("smith", ..
[Ruby] Module 활용 참고] Programming Ruby - 2nd , Chapter 9.Modules ========================================================================== Module 은 여러 Method, Class, Constant들을 그룹핑 해준다. 두가지 이점이 있는데 1. Module은 'Namespace'을 제공하고, 이들간의 충돌을 막는다. 2. Mixin 을 구현할 수 있다. (뒤에 설명) ## Namespaces 큰 Ruby Program이 있을때, 자연스레 재사용코드 단위들을 묶으려 할 것이다. 이를 클래스별로, 파일들에 나눌 것이다. 하지만, 재사용코드라 해서 Class로 구분짓는 행위가 부자연스러울때가 있다. .... Module 메카니..
[Ruby] 유니코드 확장 Ruby의 문자열은 Byte열로 구현되어있어서, 루비 문자열 객체의 메소드는 기본적으로 바이트 단위로 처리한다. 한국어와 같은 Multi-byte 문자를 처리할때 예상치 못한 결과가 발생할 수 있다. "디자인"과 같은 한글 문자열은 3글자로 구성되어있지만, 바이트 단위로는 9 바이트를 차지한다. 따라서, 바이트 기반 메소드인 "length"을 사용하면, 3 대신에 9를 리턴한다. 이때 chars라는 Proxy메소드를 사용하여, 유니코드 기반의 메소드를 지원하고 있다. 다음은 그 예이다. >> puts "디자인" 디자인 >> "디자인".length ==> 9 >> "디자인".chars.length ==> 3
[Ruby] Iconv 사용법 다음은 ruby에서 iconv을 사용하는 방법이다. # module 선언 require 'iconv' ... # EUC-KR을 UTF-8로 변환하기 위한 선언 conv = Iconv.new('UTF-8', 'EUC-KR') #Convert 'document' converted = conv.iconv(document) Tip1. Document내 확장 완성형 문자가 존재하는 경우, 에러발생 (참조 : superkdk in the NET) 위 참조에서 설명한 대로, "//IGNORE"옵션을 붙이면, 처리하지 못하는 문자열을 무시하도록 할 수 있다고 한다. # EUC-KR을 UTF-8로 변환하기 위한 선언 conv = Iconv.new('UTF-8//IGNORE', 'EUC-KR') Tip2. Ruby에서 R..
RubyOnRails - Logger 기능 Rails App에는 3가지 구동 모드가 있다. [Development/ Production/ Test] Mongrel 웹서를 이용하는 경우, 다음 처럼 구동모드를 선택할 수가 있다. mongrel_rails start -e development -d -p mongrel_rails start -e production -d -p mongrel_rails start -e test -d -p 이 구동모드에 따라 각각 log파일이 따로 존재한다. /log/development.log /log/productiont.log /log/test.log Rails에서 제공되는 logging 이외 다른 log을 기록하고 싶다면 다음처럼 꾸리면 된다. ## Log 선언 표준 or 파일 입출력 모두 가능함 logger = L..