1. 멤버 라우팅의 경우 route.rb 파일에 다음과 같이 설정하자.


rake routes 를 실행하면 다음과 같이 render_index전에 id값을 입력받는 것을 알 수 있다.



2. 콜렉션 라우팅의 경우 route.rb 파일에 다음과 같이 설정하자.


rake routes 를 실행하면 다음과 같이 id없이 바로 render_index로 간다.






참고자료




Posted by 하남각목

인자

1. 액션

2. params

3. session

4. flash


예시

1. show 액션에 id는 12라는 params와 user_id는 5라는 session을 보냄

get :show, {:id => 12}, {:user_id => 5}


2. view 액션에 id는 9라는 params와 message는 "yay!"라는  flash를 보냄

get :view, {:id => 9}, nil, {:message => "yay!"}





참고자료

1. 레일스 가이드



Posted by 하남각목

1. rspec 설치

  sudo gem install rspec


2. user_spec.rb 파일 생성

3. user.rb 파일 생성

  위 사진과 같은 계층도를 가진다.



4. user_spec.rb 파일에 다음 코드를 넣자.


  before :each 블럭은 각 테스트를 시작할 때마다 그전에 실행해야 할 코드를 말한다.

  비슷하게 before :all 블럭은 모든 테스트를 통틀어 시작하기 전에 한번 실행할 코드를 말한다.



5. 루비는 클래스와 메서드를 'ClassName#methodName' 같은 형식으로 나타낸다.


  따라서 위 코드는 User 클래스의 new 메서드를 테스트하는 것이다.

  또 거의 모든 테스트는 인스턴스.should 또는 인스턴스.should_not 메서드를 호출하는 형식이다.


6. user.rb에 다음 코드를 입력하자.


7. 터미널에서 rspec 폴더로 이동한 후 다음을 실행하자.

  > rspec spec

  rspec 명령행은 인자로 파일이나 폴더명을 받는다. 위 예에서는 spec/ 디렉토리를 인자로 받았다.


8. 좀더 발전해 나가보자.

다음은 user.rb 파일이다.


9. 다음은 user_spec.rb 파일이다.

 테스트명을 한글로 사용하려면 맨 위에 '#encoding: UTF-8"을 추가하자. 

 eql은 ==와 같다. 이는 인스턴스의 content가 같다는 의미이다.

  하지만 equal은 인스턴스와 완전 그 자체라는 의미이다.


10.  rspec spec 명령을 실행하자.


11. rspec spec --format nested 명령을 실행하면 더 보기 좋은 형식으로 나온다.





참고자료

1. net tuts+




'Ruby On Rails' 카테고리의 다른 글

rails에서 get method가 보낼 수 있는 파라미터  (0) 2013.05.19
데이터베이스 구조를 sql문으로 복사하기.  (0) 2013.05.18
Ruby TDD - Rspec 따라하기 11단계  (0) 2013.05.17
Ruby On Rails 세팅  (0) 2013.05.15
TDD - Running Test  (0) 2013.05.13
TDD - fixture  (0) 2013.05.13
Posted by 하남각목

1. \curl -#L https://get.rvm.io | bash -s stable --autolibs=3 --ruby

2. source ~/.rvm/scripts/rvm

3. rvm requirements

4. rvm install 1.9.3

5. rvm use 1.9.3 --default

6. rvm rubygems current

7. gem install rails





참고자료

1. RVM

2. Ayrton Araujo




'Ruby On Rails' 카테고리의 다른 글

데이터베이스 구조를 sql문으로 복사하기.  (0) 2013.05.18
Ruby TDD - Rspec 따라하기 11단계  (0) 2013.05.17
Ruby On Rails 세팅  (0) 2013.05.15
TDD - Running Test  (0) 2013.05.13
TDD - fixture  (0) 2013.05.13
HTML <a> 태그와 ERB의 link_to 변환  (0) 2013.05.02
Posted by 하남각목

Test를 실행해보자.

우선 첫번째 줄에 require 'test_helper'의 의미를 곱씹어보자.

  require 'test_helper'는 test_helper를 만족해야 한다는 건데,

  이 파일 안에는 모든 픽스쳐를 로드하라는 코드가 있다.





자, 그럼 1번줄에 의하여 모든 픽스쳐가 로드된 이후의 상황이다.

4~6번째 줄은 무조건 통과되는 테스트이고,

8~11번째 줄은 music 모델이 title없이 통과되면 실패하는 테스트이다.


  assert BOOL "something to say"

  BOOL이 true이면 테스트 통과. false이면 테스트 실패 & "something to say" 출력



다음과 같이 테스트를 실행할 수 있다.

  ruby -Itest 경로

  경로에는 test_helper.rb 파일이 포함되어야 한다.





참고자료

1. 레일즈 가이드




'Ruby On Rails' 카테고리의 다른 글

Ruby TDD - Rspec 따라하기 11단계  (0) 2013.05.17
Ruby On Rails 세팅  (0) 2013.05.15
TDD - Running Test  (0) 2013.05.13
TDD - fixture  (0) 2013.05.13
HTML <a> 태그와 ERB의 link_to 변환  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 901  (0) 2013.05.02
Posted by 하남각목

TDD - fixture

Ruby On Rails 2013.05.13 17:53

ROR에서 unit test란 model을 테스트 하는 것이다.

이때 우리는 fixture라는 테스트에 활용되는 샘플 데이터를 활용할 수 있다.


실제로 프로젝트폴더/test/unit/ 폴더에 있는 test 파일을 아무거나 열어보면 다음과 같은 코드를 볼 수 있다.

이는 그 테스트가 실행되기 전에 test_helper가 충족되야 한다는 것을 의미한다.



그럼 더 깊게 알아보기 위해 프로젝트폴더/test/test_helper.rb 파일을 열어보자

그 안에서 다음과 같은 코드를 볼 수 있다.


 위 코드에서 알 수 있듯이 테스트를 하기 전에 모든 fixtures가 load 된다는 것을 알 수 있다.



이번에는 fixture의 구조를 알아보자.  YAML으로 포맷되어 있다.(*.yml)

fixture 이름 밑에 key-value 형식으로 나열된다.



픽스쳐는 자동으로 로드된다.

이는 test_helper.rb 파일에서 자동으로 로드한다.


따라서 test 데이터베이스가 있어야 한다.

  rake db:test:load





참고자료

1. 레일즈 가이드




'Ruby On Rails' 카테고리의 다른 글

Ruby On Rails 세팅  (0) 2013.05.15
TDD - Running Test  (0) 2013.05.13
TDD - fixture  (0) 2013.05.13
HTML <a> 태그와 ERB의 link_to 변환  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 901  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 191  (0) 2013.05.02
Posted by 하남각목


ERB의 link_to와 HTML의 <a>태그를 비교해 보겠다.



HTML 코드

  <a href="path" class="some_class", style="some_css">링크</a>



ERB 코드

  <%= link_to "링크", path,  :class => "some_class", :style => "some_css" %>





그런데 HTML에서 <a> 태그 안에 다른 태그를 삽입하는 경우는 어떨까?

예를 들어 다음과 같은 코드를 보자.


HTML

  <a href="path" class="some_class", style="some_css">

      <i class="icon"></i> 아이콘

  </a>



이는 ERB로 이렇게 해석할 수 있다.

  <%= link_to path, :class => "some_class", :style => "some_css" do %>

      <i class="icon"></i> 아이콘

  <% end %>





참고자료




'Ruby On Rails' 카테고리의 다른 글

TDD - Running Test  (0) 2013.05.13
TDD - fixture  (0) 2013.05.13
HTML <a> 태그와 ERB의 link_to 변환  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 901  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 191  (0) 2013.05.02
Bootstrap - navbar-form  (0) 2013.05.01
Posted by 하남각목


코드번호 901에러


이 에러는 페이스북에 등록한 앱이 sandbox 모드일 때 일어난다.


 Sandbox Mode 란 앱 관계자만 페이스북을 통해서 접속이 가능한 모드이다.


이럴 때는 다음과 같이 sandbox 모드를 해제해준다.




그러면 다음과 같이 모두에게 접속가능해진다.






참고자료





'Ruby On Rails' 카테고리의 다른 글

TDD - fixture  (0) 2013.05.13
HTML <a> 태그와 ERB의 link_to 변환  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 901  (0) 2013.05.02
Omniauth - 페이스북 로그인 에러 191  (0) 2013.05.02
Bootstrap - navbar-form  (0) 2013.05.01
Omniauth - 페이스북 로그인  (0) 2013.05.01
Posted by 하남각목



코드번호 191 에러

이 에러는 페이스북 앱에서 Site URL이 잘못지정된 경우에 생기는 오류이다.

테스트시에는 localhost:3000과 같은 주소를 쓸 수 있으나 실제 서버에서 사용하려면 url을 적어줘야 한다.

  로컬에서 테스트할 때는 서버 url을 적을 시 같은 오류가 뜬다. 반드시 배포시에만 바꿔주자.



오류.


변경.


  서버 ip주소를 적어도 같은 오류가 생긴다. 반드시 도메인 네임을 써줘야 한다.

  아직 도메인을 구입하지 않았다면 /etc/hosts 에서 도메인을 지정해 줄 수 있다.




참고자료







Posted by 하남각목


navbar위에 navbar-form클래스를 이용해 로그인 폼을 만드는 방법이다.

다음 코드를 원하는 위치에 넣어주자.

 form_for의 클래스를 지정해 줄때는 :html => {:class => "navbar-form"} 으로 해준다.

 필드나 체크박스의 인자로 보내지는 모델의 원소는 html에서 name으로 변해 들어간다.

  예를 들어  :email 을 인자로 갖는 필드에는 user[email]로 이름이 지정된다.



다음은 결과이다.




참고자료





Posted by 하남각목