일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- minitest
- 전화영어
- TIP
- Ruby on Rails
- programmingTip
- RoR
- fixture
- 점심영어스터디
- Migration
- Hadoop
- max중첩
- Shell
- transaction
- mysql
- test
- share
- apache spark
- programming
- fileUploader
- rubyonrails
- uploader
- Linux
- activerecord
- Scala
- Ruby
- java
- form
- carrierwave
- Rails
- 삽질기
- Today
- Total
목록전체 글 (37)
아침바라기의 이야기
주의) Active Record scope vs class method 원문 글과 거의 비슷합니다. 제가 이해 해보려고 요약해보는 내용입니다.-.-;; Active record에는 scope라는 개념이 있다. Active record로 DB에서 데이터를 조회할 때 조회 범위를 줄여준다거나 필터링 할때 주로 사용한다. 예를 들면, 블로그에서 발행된 포스트만 조회한다는 의미를 담고 있을때, Post.published 위와 같이 조회하도록 한다. 자 여기서 분명한 특징을 생각해보자. 조회 한걸 봤을때 클래스 메소드가 아닐까? 일종의 클래스 메소드가 맞다. 다만 클래스 메소드처럼 클래스가 로드 되는 시점에 블록을 평가하는 형태가 하나, 호출되는 시점에 블록을 평가하는 형태 두가지가 있다.
mini 테스트는 Fixture를 사용한다. 즉 DB를 이용해서 테스트를 하는데 test case마다 한번 전체 테이블의 데이터를 지우고 Fixture를 한번 로딩하는 반복을 이용한다. mini test에서는 test case 마다 transaction의 begin, rollback 을 사용한다. 대부분 DB(MS SQL 빼고)에서 중첩 transaction을 지원하지 않으므로 테스트 케이스 테스트 중에 오류가 발생할 수 있다. 트랜잭션이 걸려 있는 경우, 1. transaction을 스킵하는 기능을 만듬2. AOP를 적용 3. transaction을 사용하지 않는다.4. helper class를 통해서 테스트 범위 밖으로 밀어버린다. 위의 4가지 방법을 이용해서 트랜잭션 중첩을 회피 해야한다. fixt..
Rails 트랜잭션 오늘은 Rails에서 트랜잭션을 사용하는 방법을 다뤄본다.테스트는 레일즈 4.1.2 버전에서 진행했다. 기본적인 사용벙법 모델에 transaction method(ActiveRecord::ConnectionAdapters::DatabaseStatements 에 있다)를 호출하면 된다.파라미터로 블록 안에 한번에 transaction 으로 처리해야 할 내용을 추가한다.(참 쉽죠?)이제 예제를 보자.Article.transaction do @article.title = 'change.' @article.save end 임의로 롤백을 하려면? 간단히 ActiveRecord::Rollback.new 를 raise하면 된다. Article.transaction do @article.title ..