일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- fixture
- max중첩
- fileUploader
- Rails
- Linux
- programmingTip
- Scala
- Migration
- rubyonrails
- form
- uploader
- minitest
- transaction
- java
- TIP
- 전화영어
- 삽질기
- 점심영어스터디
- RoR
- Hadoop
- activerecord
- Ruby
- share
- carrierwave
- apache spark
- test
- programming
- Ruby on Rails
- Shell
- mysql
- Today
- Total
목록transaction (2)
아침바라기의 이야기
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 ..