Ruby
2009.07.01 23:36

Rails - Getting started

조회 수 21119 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

 

Rails 가 뭐지? 

Rails 는 루비(Ruby) 언어로 작성된 웹(web) 개발 프레임워크이다.
타 언어와 프레임워크에 비해서 적은 코드로 많은 것을 할 수 있다.
루비의 철학은 아래와 같다.
 * DRY - "Don't Repeat Yourself" : 같은 코드를 반복하여 작성하지 마라
 * Convention Over Configuration : 뭘하기를 원하며 어떻게 할 것인지 대해 가정한다. 수많은 설정보다는 관습을 중요시한다는 의미인듯.
 * REST is best pattern for web application : 웹응용을 위한 최선의 패턴이다. 자원과 표준 HTTP를 통해서 응용을 체계화하는 것은 가장 빠른 길이다.

 

MVC 구조

Rails는 Model, View, Controller를 통해서 체계화된다. 이를 MVC 라한다.
* UI와 비지니스 로직(business logic)의 분리
* 코드 유지가 용이하다.
* 유지보수가 용이하다.
  - Model: 데이터를 나타냄
  - View: UI
  - Controller: Model과 View를 연결함. 웹 브라우져의 요청을 처리한다.

 

Rails 구성요소

* Action Controller: 컨트롤러들을 관리함, 레일스 응용에 요청이 오면 처리함. 세션관리, 템플릿 렌더링, 리다이렉션
* Action View: 뷰. HTML, XML 출력 둘다 생성가능. nested, partial 템플릿, 내장 AJAX
* Active Record: 모델의 기본이됨. DB 독립성. 기본 CRUD. 향상된 찾기 기능. 연관모델.
* Action Mailer: e-mail 서비스
* Active Resource: 비지니스 객체와 REST한 웹서비스간에 연결관리. 웹기반 자원과 로컬 객체를 매핑함.
* Railties: 타 rails 응용들과 연결이 용이
* Active Support: 유용한 레일스 라이브러리.

 

새로운 Rails 프로젝트 만들기

Rails 설치하기

$ gem install rails 

 

블로그(Blog) 응용 만들기

아래는 DB를 mysql을 사용함을 나타낸다. -d 옵션으로 사용할 DB를 지정해주면된다.

$ rails blog -d mysql

 실행하고 나면 blog 라는 디렉토리가 생성된다.

$ cd blog 

 디렉토리별로 간단히 설명하면,

파일/디렉토리

목적

README

응용에 대한 간단한 조작 매뉴얼임. 응용이 무엇을 하는지, 셋업은 어떻게 하는지 적어라.

Rakefile

일괄처리되는 작업들을 포함되어 있다.

app/

컨트롤러, 모델, 뷰

config/

어플리케이션의 실행시 규칙, 경로(routes), 데이터베이스 등

db/

현재 DB 구조. DB 마이그레이션.

doc/

문서들

lib/

어플리케이션의 확장모듈들

log/

어플리케이션 로그 파일들

public/

이미지, 자바스크립트, 스타일시트, 기타 정적 파일들

script/

반복적인 작업을 하는 스크립트들. 벤치마킹, 플러그인 설치, 콘솔, 웹서버...

test/

단위 테스트, 설치물, 기타 테스트 툴.

tmp/

임시파일들

vendor/

third-party 코드

 

TAG •

Ruby
2009.06.12 20:57

Rails - config/database.yml

조회 수 19229 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
development:
  adapter: mysql
  database: people_development
  encoding: utf8
  host: localhost
  username: rails
  password: 1234
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  database: people_test
  encoding: utf8
  host: localhost
  username: rails
  password: 1234
production:
  adapter: mysql
  database: people
  encoding: utf8
  host: localhost
  username: rails
  password: 1234


Ruby
2008.09.23 17:13

Rails / text_field_tag

조회 수 23064 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

  text_field_tag 'name'
  # => <input id="name" name="name" type="text" />

  text_field_tag 'query', 'Enter your search query here'
  # => <input id="query" name="query" type="text" value="Enter your search query here" />

  text_field_tag 'request', nil, :class => 'special_input'
  # => <input class="special_input" id="request" name="request" type="text" />

  text_field_tag 'address', '', :size => 75
  # => <input id="address" name="address" size="75" type="text" value="" />

  text_field_tag 'zip', nil, :maxlength => 5
  # => <input id="zip" maxlength="5" name="zip" type="text" />

  text_field_tag 'payment_amount', '$0.00', :disabled => true
  # => <input disabled="disabled" id="payment_amount" name="payment_amount" type="text" value="$0.00" />

  text_field_tag 'ip', '0.0.0.0', :maxlength => 15, :size => 20, :class => "ip-input"
  # => <input class="ip-input" id="ip" maxlength="15" name="ip" size="20" type="text" value="0.0.0.0" />



참조: http://api.rubyonrails.org/

크리에이티브 커먼즈 코리아 저작자표시 Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락/3.0에 따라 이용하실 수 있습니다


TAG •

Ruby
2008.09.18 10:45

Example variable and class names

조회 수 20149 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form


Variables
Constants and
Local Global Instance Class Class Names
name $debug @name @@total PI
fishAndChips $CUSTOMER @point_1 @@symtab FeetPerMile
x_axis $_ @X @@N String
thx1138 $plan9 @_ @@x_pos MyClass
_26 $Global @plan9 @@SINGLE Jazz_Song



변수 (Variables): Local, Global, Instance, Class

Local Variable
지역적으로 사용됨.. 예로.. 메소드내에서 사용되고 메소드 밖에서는 사라짐.

Global Variable
전역적으로 사용되는 변수 임.

Instance Variable
클래스 맴버 변수라 생각하면 되겠음.

Class Variable
클래스 변수이며 static 함.

TAG •

Ruby
2008.09.17 23:02

Rails / 액티브 레코드 기초

조회 수 23082 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

 액티브 레코드란
액티브 레코드에서는 레코드 객체를 통하여 DB의 테이블을 조작한다.
각각의 레코드는 DB 테이블에서 각각의 행과 대응하고, 각각의 액티브 레코드 객체는 DB 조작에 필요한 CRUD (생성, 읽기, 수정, 삭제) 메소드들을 가지고 있다.
이러한 설정은 DB 테이블과 Application 객체 간에 간결하고 직관적으로 대응한다.


속성을 추가할 때 단 한곳에만 추가하면 된다.
관계와 모델 기반 검증을 코드 생성없이 프레임워크 자체적으로 할 수 있도록 선언 가능함.
주 키나 후보 키를 따로 설정할 필요 없으며, 액티브 레코드가 자동으로 찾는다.

----

따분한 개론ㅋ

TAG •

Ruby
2008.09.17 15:23

레일즈 (Rails) 의 장점

조회 수 23294 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
메타 프로그래밍
엑티브 레코드
설정보다 진보한 규약
스캐폴딩
내장 테스트
3개의 환경: 개발, 테스트, 서비스
TAG •

Ruby
2008.03.17 22:56

Deploying Rails on Windows

조회 수 24052 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
명령 프롬프트를 열어 아래와 같이 gem을 설치합니다.

gem install rails --include-dependencies <- 레일스 젬 설치
gem install mongrel --include-dependencies <- mongrel 설치
gem install mongrel_service --include-dependencies <- mongrel_service 설치 (이게 젱 중요한 듯)



윈도우즈 서비스에 등록하기 위해 아래와 같이 명령 프롬프트에서 입력해줍니다.
mongrel_rails service::install -N my_sweet_app -c c:\path\to\my_sweet_app -p 4000 -e production
net start my_sweet_app
-N 옵션이 서비스 이름입니다. 윈도우 서비스에 이 이름으로 등록되는거져 (제어판->관리도구->서비스)
-c 옵션에는 어플리케이션 경로를 적어줍니다.
-p 옵션에는 서비스 포트 번호죠.
-e 옵션은 어플리케이션을 production 모드로 구동할 거라는 겁니다.

net start my_sweet_app는 서비스 시작한다는 의미입니다.

서비스로 등록해 놓으면 명령 프롬프트에서 실행하는 것보담 여러모로 좋은 것 같습니다.
배포시엔 이렇게 해놔야 겠죠.
TAG •

Ruby
2008.03.07 01:24

마이그레이션 (Migration)

조회 수 27272 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
데이터베이스 스키마에 대한 일종의 버전관리 시스템

ruby script/generate migration InitialSchema
  create db/migrate
  create db/migrate/001_initial_schema.rb



001_initial_schema.rb 파일의 내용
self.up과 self.down이라는 두 개의 클래스 메소드 존재
class InitialSchema < ActiveRecord::Migration
  def self.up
  end

  def self.down
  end
end


마이그레이션 실행
rake db:migrate


TAG •

Ruby
2008.01.25 09:45

반복문

조회 수 20977 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
 반복문 for 예제
   - 해당 자료형의 원소의 개수만큼 루프 수행함.
>> languages = ["java", "c++", "ruby"]
=> ["java", "c++", "ruby"]
>> for lang in languages do
?>   puts lang.capitalize
>> end
Java
C++
Ruby
=> ["java", "c++", "ruby"]

 반복문 while 예제
  - 조건이 거짓이 되면 루프를 종료한다.
>> i = 4
=> 4
>> while i > 0 do
?>   puts i
>>   i -= 1
>> end
4
3
2
1
=> nil

 반복문 until 예제
  - 조건이 참이되면 루프를 종료한다.
>> until i > 4 do
?>   puts i
>>   i += 1
>> end
0
1
2
3
4
=> nil


do ... end 는 C 언어에서 { } 블록과 같다.



TAG •

Ruby
2008.01.23 22:42

배열

조회 수 19584 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
배열(Array)은 여러 개의 데이터를 순서대로 보관하기 위한 데이터 타입니다.

 배열 객체를 생성하는 방법

  1. Array 클래스의 new 메소드 사용하는 방법
  2. 배열 리터럴을 사용하는 방법

new 메소드 사용예
>> arr = Array.new
=> []
>> arr.push(3)
=> [3]
>> arr.push("wittgens")
=> [3, "wittgens"]
>> arr.push(36.5)
=> [3, "wittgens", 36.5]

배열 리터럴 사용예
 >> arr = [3, "abc", 11.5]
=> [3, "abc", 11.5]


배열의 참조는 첨자로 하며 인덱스는 0부터 시작한다.
>> arr[0]
=> 3
>> arr[1]
=> "abc"
>> arr[2]
=> 11.5
>> arr[3]
=> nil

현재 nil 인 인덱스에 객체를 대입하면, 사이에 있는 값들은 모두 nil 이 된다.
>> arr[6] = "hello"
=> "hello"
>> arr
=> [3, "abc", 11.5, nil, nil, nil, "hello"]

배열이 특정 객체를 포함하고 있는지 확인하고 싶으면 include? 메소드를 사용할 수 있다.
루비에서는 메소드 이름의 마지막에 ? 기호를 사용하는데, 보통 true 혹은 false를 반환한다.
>> arr.include? "abc"
=> true
>> arr.include? nil
=> true
>> arr.include? "hell"
=> false

Array 클래스에는 아주 많은 메소드를 지원하는데, 자세한 사항은 API를 참조하기 바람.



TAG •

Ruby
2008.01.23 22:28

조건문

조회 수 18292 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
조건은 nil 이 아닌 모든 값이 true와 동일하게 최급된다. 즉, nil 은 false 이다.
 Example: if
password = "1234"
if password.length < 6
        puts "< 6"
elsif password.length > 10
        puts "> 10"
else
        puts "Good."
end

 Example: unless (if not 의 의미)
unless password == "1234"
    puts "invalid password"
end




TAG •

Ruby
2008.01.23 10:31

숫자

조회 수 18321 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
정수(Fixnum)와 실수(Float)를 지원함.
>> 3+18
=> 21
>> 11-20
=> -9
>> 7*-1
=> -7
>> 18 / 5
=> 3
>> 18 / 5.0
=> 3.6

>> n1 = 10
=> 10
>> n2 = 20
=> 20
>> n1 - n2
=> -10
>> n1+=10
=> 20
>> n1 + n2
=> 40

정수와 실수의 연산에서는 정수를 실수로 변환하여 계산된다. 자료형이 큰 쪽으로 변환된다.
자료형을 변환하기 위해서는 아래 메소드를 사용한다.
to_i : 정수형으로 변환
to_f : 실수형으로 변환
to_s : 문자열로 변환
>> n1 = 5.0
=> 5.0
>> n1 + n2
=> 25.0
>> n1.to_i + n2
=> 25


TAG •

Ruby
2008.01.22 10:06

문자열

조회 수 21146 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
문자열(String)은 루비에서 가장 많이 사용하는 클래스라고 할 수 있다.
문자열 클래스는 다양한 메소드을 제공한다.
>> "hello".capitalize
=> "Hello"
>> "hello".upcase
=> "HELLO"

>> str="hello"
=> "hello"
>> str.capitalize
=> "Hello"
>> str.upcase
=> "HELLO"
>> str
=> "hello"

capitalize, upcase 메소드는 새로운 문자열 객체를 생성하여 반환하기 때문에 원래 문자열은 보존된다.
원래 문자열 자체를 변경하기 위해서는 메소드이름 마지막에 !(느낌표)를 붙이면 된다.
>> str.capitalize!
=> "Hello"
>> str
=> "Hello"


두개 이상의 문자열을 결합하기 위해서는 + 연산자를 사용한다.

문자열 안에 다른 문자열을 삽입하는 것도 가능하다.
>> name = "Jeong-soo"
=> "Jeong-soo"
>> "Hello #{name}!"
=> "Hello Jeong-soo!"

#{ ... } 안에는 어떠한 루비 코드도 들어갈수 있다.

문자열을 표현하는 데는 큰따옴표(")와 작은따옴표(')를 사용하는데, 큰따옴표는 특수문자를 금지하지 않으며, 작은 따옴표는 특수문자를 금지한다.
>> puts "hello\tworld"
hello   world
=> nil
>> puts 'hello\tworld'
hello\tworld
=> nil


TAG •

Ruby
2007.12.12 22:10

Getting Started : Ruby

조회 수 23495 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

루비 = 스몰토크의 객체지향성 + 펄의 텍스트 처리 + Lisp의 메타프로그래밍


루비 시작하기
[wittgens@fedora ruby]$ cat hello.rb
puts "hello world"
[wittgens@fedora ruby]$ ruby hello.rb
hello world
[wittgens@fedora ruby]$

여기서 puts 라는 함수는 표준 출력(stdout)으로 지정 문자열을 출력하는 함수..
표준 입력(stdin)으로 부터 문자열을 받는 함수는 gets 이다. newline까지 입력받음.
[wittgens@fedora ruby]$ cat hello2.rb
puts "What is your name?"
name = gets
puts("Hello " + name)

[wittgens@fedora ruby]$ ruby hello2.rb
What is your name?
Jeong-soo, Kim
Hello Jeong-soo, Kim

코드를 실행할 때마다 편집기 및 셸을 왔다갔다 하려면 번거롭다.
python 인터프리터와 같이 irb (Interactive RuBy) 유틸리티를 사용하면 이를 해결해준다.
[wittgens@fot ~]$ irb
irb(main):001:0>
irb(main):008:0> puts "hello world!"
hello world!
=> nil
irb(main):009:0>

루비에서는 값이 없다는 의미로 nil 을 사용한다. java에서의 null과 같은 의미인 것 같다.

루비에서는 모든 자료형을 객체 취급한다.
"hello" 라고 표현하면 문자열 객체가 되는 것이다. 객체가 된다는 의미는 메소드를 지닌다.
"hello".length 과 같이 length라는 메소드를 호출할 수 있다.

루비에서는 한줄에 여러 변수에 값을 넣을 수도 있다.

str1, str2 = "hello", "bye"
str1 에는 "hello", str2 에는 "bye"가 들어간다.


문자열 객체에 여러 메소드를 지원하는데 100개가 넘는다.
size, upcase, ...

 TIP) 오픈소스 루비 라이브러리를 찾는다면, http://raa.ruby-lang.org/ 사이트를 참고함.

객체를 생성하는 방법은 new 메소드를 이용하면 된다.
[wittgens@fot ~]$ irb --simple-prompt
>> arr = Array.new
=> []
>> arr.push("cat")
=> ["cat"]
>> arr.push(123)
=> ["cat", 123]
>>

new와 깉이 클래스에 직접 호출하는 메소드를 클래스 메소드라 하며,
push와 같이 객체에 호출하는 메소드를 객체 메소드 또는 인스턴스 메소드라 부른다.

문자열안에 다른 문자열을 삽입하는 방법은 아래와 같다.
>> name = "Jeong-soo"
=> "Jeong-soo"
>> "Hi, #{name}"
=> "Hi, Jeong-soo"

큰따옴표와 작은따옴표는 차이가 있다.
문자열안 특수문자의 입력이 있는지 여부로 구분된다.
작은 따옴표는 특수문자 허용을 하지 않으며 큰따옴표(")는 허용한다.
위의 "Hi, #{name}" 부분을 작은 따옴표로 둘러싼 경우는
출력결과가 "Hello, #{name}"이 된다.

객체의 메소드를 확인하는 메소드는 methods 이다.
>> 5.methods
=> ["%", "inspect", "<<", "singleton_method_added", "&", "clone", ">>", "round", "method", "public_methods", "instance_variable_defined?", "divmod", "equal?", "freeze", "integer?", "chr", "*", "+", "to_i", "methods", "respond_to?", "-", "upto", "between?", "prec", "truncate", "/", "dup", "instance_variables", "__id__", "modulo", "succ", "|", "eql?", "object_id", "zero?", "~", "id", "to_f", "singleton_methods", "send", "prec_i", "taint", "step", "to_int", "frozen?", "instance_variable_get", "^", "__send__", "instance_of?", "remainder", "to_a", "+@", "nonzero?", "-@", "type", "**", "floor", "<", "protected_methods", "<=>", "instance_eval", "display", "==", "prec_f", "quo", ">", "===", "downto", "id2name", "size", "instance_variable_set", "kind_of?", "abs", "extend", ">=", "next", "to_s", "<=", "coerce", "hash", "ceil", "class", "tainted?", "=~", "private_methods", "div", "nil?", "untaint", "times", "to_sym", "[]", "is_a?"]


TAG •

Ruby
2007.11.13 11:05

Blocks and Iterators

조회 수 17096 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
코드 블럭 (Code Blocks)

아래는 간단한 블럭을 생성한 예제입니다.

{ puts "Hello" }  # this is a block

do
  club.enroll(person)
  person.socialize
end


ruby에서 블럭의 개념은 막강합니다.
callback 함수, 코드 덩어리(code chunk) 전달, 순환자(iterator) 를 구현하는데, code block이 사용됩니다.

def callBlock
  yield
  yield
end

callBlock { puts "In the block" }

결과:
In the block
In the block

위 수행결과를 보면 yield를 사용하여 code block를 받았다.

아래 예제를 보자
a = %w( ant bee cat dog elk) # create an array
a. each { |animal| puts animal } # iterate over the contents
수직 바(bar, |)를 이용하면 yield의 인자가 대치됩니다..
# within class Array ...
def each
  for each element
    yield(element)
  end
end


TAG •

Ruby
2007.11.12 20:04

Summary 그 첫 번째 ...

조회 수 21067 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

▣ 루비의 주석은 '#'으로 시작함.

 

▣ 루비는 순수 객체 지향 언어임.

 

▣ 모든 것이 객체로 조작됨.

"string1".length

7

"abc".index("c")

2

-100.abc 

100

 

▣ 객체 생성법

a. Song1 = Song.new("contructor")

b. 객체 참조명 = 클래스.new(인자)

 

▣ 함수 선언

def func(arg1)

statements ...

end

 

▣ 함수 호출 : 아래 두 개는 동일하게 수행됨.

a. func("abc")

b. func "abc"

 

▣ 문자열 안에 {#expression}

 

▣ 변수와 클래스 명명법

a. Local : 소문자로 시작하거나 _로 시작하는 문자

b. Global : $ 로 시작함

c. Instance : @ 로 시작함

d. Class 변수 : @@ 로 시작함

e. Class 이름 : 대문자로 시작함.

 

▣ 배열과 해쉬 (Array and Hash)

Array

Expression: array_name = [ element1, element2, … ]

1. [] <- empty array

2. Array.new <- empty array

ii.   Reference: array_name[0], array_name[1]

1. 참조시 해당 첨자에 원소가 없으면 nil

2. nil 은 조건식에 사용될 때는 false.

iii.   배열 쉽게 생성하는 방법 : %w{ } 를 사용함.

1. array1 = %w{ ant bee cat dog elk }

a. array1[0]    >> "ant"

b. array1[3]    >> "dog"

Hash

Expression

hash_name = {

   'cello' => 'string',

   'drum' => 'percussion'

}

i.   Refrence: hash_name['cello']

ii.   기본값을 정해 Hash 생성하기

1. histogram = Hash.new( 0 )

2. histogram['key1']    >> 0

3. histogram['key1'] = histogram['key1'] + 1

4. histogram['key1']   >> 1

 

Control Structures

if

if count > 0

puts "try again"

elsif tries > 3

puts "you lose"

else

puts "Enter a number"

end

elsif 는 여러 번 사용해도 됨

statements if

puts "Dangers, Mr. Kim" if radiation > 3000

문장들 뒤에 if를 사용하면 편리함 ^^

while

while weight < 10 and numPallets <= 30

pallet = nextPallet()

weight += pallet.weight

numPallets += 1
end


statements while

square = square * square while square < 1000

문장 뒤에 while도 사용할 수 있음

 

Regular Expression

a. Expressions)

i.   /Perl|Python/ : Perl or Python

ii.   /P(erl|ython)/ : Perl or Python

iii.   /ab+c/ : abbc, abbbc, …

iv.   /ab*c/ : abc, abbc, abbbc, …

b. match operator : =~

c. Examples)

if line =~ /Perl|Python/

puts "Scripting language is #{line}"

end

 =~ 매치 연산자

문자열 표현 속에 #{line}

line.sub(/Perl/, 'Ruby')

최초 Perl로 시작하는 표현을 Ruby로 대체

line.gsub(/Perl/, 'Ruby')

모든 Perl로 시작하는 표현을 Ruby로 대체

 

Blocks and Iterators

Blocks

Expression: { statements }

Example)

def callback

yeild arg1

yeild arg1

end

 

callBack { |arg1| puts arg1 }

In the Block

In the Block

yeild 문에 Block이 수행됨.

yeild 문에 인자를 줄 수 있는데,

Block 안에서는 | |로 받음.

 

TAG •

Board Pagination Prev 1 Next
/ 1