블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'프로그래밍/Ruby'에 해당되는 글 2

  1. 2014.08.18 Ruby 개발환경 설정하기 (윈도우7에서) (1)
  2. 2014.08.18 루비 기본 문법 정리
 

Windows 7에서 Ruby 개발환경 설정하기




MongoDB in Action 몽고디비 인 액션

저자
카일 뱅커 지음
출판사
제이펍 | 2012-04-20 출간
카테고리
컴퓨터/IT
책소개
MongoDB나 NoSQL에 경험 없는 개발자를 위한 쉽고 실전...
가격비교


이책을 공부하다보니, 예제가 ruby라서, 예상치 않게 Ruby를 살펴보고 있는데, 윈도우즈7에서 Ruby 개발 환경 설정하는 것이 쉽지 않아서 설정 방법을 요약하고자한다.


1. Ruby Install 하기

http://rubyinstaller.org/downloads/ 에서 Ruby Install 바이너리를 받아서 설치한다. 2.2.0-p481(x64)

여기까지는 보통 문제 없이 잘된다.


향후에 모듈을 설치하려면 보통 컴파일 에러가 나오면서 잘 안되는 경우가 많다.

%gem install bson_ext


2. SSL 에러 해결하기

회사등에서 설치할 경우, https를 통해서 gem repository에 접근하는데, 회사 방화벽이나 Proxy에서 SSL 인증서를 변경한다면, 인증서 오류로 인해서 SSL오류가 나면서 설치가 되지 않는 경우가 있다. 이런 문제를 해결하기 위한 대안으로는 gen repository 사이트에 대한 연결을 https에서 http로 변경하면 된다.

% gem sources -r https://rubygems.org/

% gem sources -a http://rubygems.org/


3.컴파일 환경 설정하기

다시 인스톨을 시도 해보면, 또 에러가 날 수 있는데, 컴파일 환경이 설정되어 있지 않는 경우이다. (아래와 같은 에러)



 이 모듈은 native 모듈 (C/C++로 짜여진 모듈)을 포함하고 있기 때문에 십중팔구 인스톨이 안된다. 네이티브 모듈은 컴파일이 필요한데, 이 C/C++을 컴파일 할 수 있는 컴파일러가 없기 때문이다.

Ruby에서는 gcc를 컴파일러로 사용하는데, 윈도우즈에서 이러한 컴파일 환경을 설정하려면 Ruby DevKit을 인스톨 해주면 된다.



http://rubyinstaller.org/downloads/ 에서 설치한 Ruby 버전에 맞는 Development Kit을 받아서 실행한다.

실행하면 압축이 풀리는데, 해당 디렉토리로 가서

%ruby dk.rb init 
을 실행한후

%ruby dk.rb install -f 

를 실행한다.

이때 install 과정에서 config.yaml 파일이 잘못되었다고 에러가 나올 수 있다.(안나오면 다음 스탭으로 진행)

config.yaml 파일을 열어보면 여기에 Ruby 를 설치한 Home directory가 init 단계에서 지정되어 있어야 하는데, 제대로 지정이 안되는 경우가 있다. config.yaml 파일을 열어서 Ruby 설치 디렉토리를 아래와 같이 지정한다. 

※ 아래는 ruby가  C:/dev/lang/Ruby200-x64 에 설치되어 있을 경우이다.


# This configuration file contains the absolute path locations of all

# installed Rubies to be enhanced to work with the DevKit. This config

# file is generated by the 'ruby dk.rb init' step and may be modified

# before running the 'ruby dk.rb install' step. To include any installed

# Rubies that were not automagically discovered, simply add a line below

# the triple hyphens with the absolute path to the Ruby root directory.

#

# Example:

#

# ---

# - C:/ruby19trunk

  - C:/dev/lang/Ruby200-x64


4. msys-1.0 라이브러리 패치

여기까지 하고 다시 모듈 인스톨을 다시 시도 해보자. 그래도 안되고 아래와 같은 에러가 나는 경우가 있다.

m.AllocationBase 0x0, m.BaseAddress 0x60E90000, m.RegionSize 0x170000, m.State 0x10000

Ruby는 윈도우에서 모듈 컴파일을 할대, 앞서 설치한 DEVELOPMENT KIT을 통해서 컴파일을 하는데, 이 KIT는 cygwin을 기반으로 되어 있다. 위의 에러는 cygwin 모듈중에서 나는 에러로

http://support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull  에서 msys-1.0.dll을 다운로드 받아서 Development Kit을 설치한 디렉토리의 /bin 디렉토리에서 msys-1.0.dll을 앞에서 다운로드 받은 dll로 overwrite시켜주면 된다.


여기 까지 진행하고 다시 모듈을 인스톨해보면 대부분의 경우 설치가 될것이다.



저작자 표시
신고

'프로그래밍 > Ruby' 카테고리의 다른 글

Ruby 개발환경 설정하기 (윈도우7에서)  (1) 2014.08.18
루비 기본 문법 정리  (0) 2014.08.18

루비 기본 문법 정리

프로그래밍/Ruby | 2014.08.18 23:10 | Posted by 조대협

Ruby 언어 기본 문법


루비언어의 특성을 자바나 다른 언어에 비해서 다른 부분만 요약 정리


Class,Object 

- 클래스 변수는 @@를 사용해서 정의 @@name = 'hello'

클래스 메서드는 클래스로만 호출 가능. object에서는 호출 불가

클래스 변수나 메서드에 대해서는 http://dimdim.tistory.com/entry/Ruby-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EB%B3%80%EC%88%98 보고 다시 정리 필요


Object

- 생성 : New를 이용해서 class로 부터 생성 Class명.new 로 생성. 예 object=MyClass.new 

- 객체 변수는 @를 사용해서 정의 예 @hello = hello

- Putter와 Setter

class Horse


  def name # getter

    @name

  end


  def name=( value ) # setter

    @name = value

  end


end


Module

- Module : 외부에서 import되는 라이브러리로, Object 처럼 new로 생성이 불가. require를 이용해서 불러옴. include를 이용해서 Statement를 통째로 넣을 수 있음

모듈 예)

#dics.rb

module Dice


  # virtual roll of a pair of dice

  def roll

   p 'im in module'

  end


end


#game.rb

require 'dice'


class Game

 include Dice

end


g = Game.new

g.roll


==> im in module


변수

- 전역 변수는 $를 사용 $global=10

- Type은 define하지 않음 x=10, mystring="hello" 식으로 정의함

- 문자열은 ' 또는 " 양쪽 다 사용 가능함


숫자 타입

- 일반 연산자는 같음 

- ** : 제곱


배열

- 배열 : [] 로 감쌈 - a = [1,2]. print a[0]

- 해쉬 : {} 로 감쌈 Key/value는 =>로 구별  지정 - h = {"name"=>"terry","address"=>"seoul"} , p h["terry"]

- 배열,해쉬 traverse : 

    a.each do |e|

      p e

    end


메서드 정의

- def hello

   # logic

  end

- 리턴 방식은 return 을 그냥 사용 또는 리턴 값을 return 없이 그냥 써도 됨

  def f

    10

  end

  f() #==> 10이 출력됨

- 인자가 있는 경우 def hello(name,age) 

- 디폴트 값이 있는 경우 def hello(name="terry",age) 이경우 호출은 hello(40)

- Variable argument 를 넘길때는 *를 사용함 def sayhello(var,*vars)


Comment

- 주석은 #를 사용함 


Ruby 언어만의 좀 특이한 특성


Block 

- {} 로 둘러싸인 코드 블럭

- yield를 호출하면 코드 블럭으로 치환함 (일종의 include와 같은 효과)

예)

 def func

   p "hello"

   yield

   p "world"

   yield

 end

 func { p "this is code block"}

 실행 결과 =>

"hello"

"this is code block"

"world"

"this is code block"

=> "this is code block" # 이건 리턴 값


Procs

- 일종의 함수 포인트와 같은 개념

- name = Proc.new{ statement로 로직 정의}

  name.call 하면 statement가 실행됨

  

Symbol

- :로 시작함

- 조금더 research 필요


Quick Reference는 http://www.tutorialspoint.com/ruby/를 참조하면 좋음



저작자 표시
신고

'프로그래밍 > Ruby' 카테고리의 다른 글

Ruby 개발환경 설정하기 (윈도우7에서)  (1) 2014.08.18
루비 기본 문법 정리  (0) 2014.08.18