일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- RoR
- Linux
- rubyonrails
- Shell
- fileUploader
- mysql
- transaction
- 삽질기
- uploader
- Hadoop
- share
- programming
- test
- carrierwave
- max중첩
- minitest
- 전화영어
- Ruby on Rails
- TIP
- fixture
- Scala
- form
- Ruby
- apache spark
- Rails
- Migration
- activerecord
- 점심영어스터디
- programmingTip
- Today
- Total
목록rubyonrails (6)
아침바라기의 이야기
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 ..
지난번 포스트에 이어 다시한번 carrierwave gem를 다룬다. 최근 필자는 난감한 상황에 봉착했다. 데드라인이 얼마 안남은 프로젝트에서 미를 추구하는 우리의 아름다운 분들이 웹 페이지마다 썸네일 크기를 제각각으로 만들었다. 물론 거기에 디바이스 종류(PC, 모바일기기 등등)에 따라 썸네일 사이즈가 요동치는 것은 물론이다. (이른바 썸네일 지옥이 시작된것이니...OTL) Carrierwave에서 제공하는 업로더 예제를 그대로 사용해보려고 했다. 이리저리 따져봤다. 썸네일 1개당 이미지 업로더 클래스가 1개. 그리고 기기별로 version 추가. 기기별 version 추가는 어차피 피할 수 없다. (기기별 대응은 하다보면 더러워질 수 밖에 .-_-) 그러면, 기기별로 version을 만드는건 피할 수..
오늘은 오래된 레일즈 이디엄 포스팅을 공유해보고자 한다. 이디엄은 코드레벨에서 자주 재사용하는 코딩 로직이라 할 수 있다. 이런 이디엄은 간결하면서도 (왠만하면) 가독성이 높고 효과적인 코드를 만들어준다. 두 가지 이디엄만 원문에서 뽑아서 포스팅 해본다.(항목이나 내용은 좀 바뀔 수 있음) 1) 3항 연산자 대신 try (in erb) api docs에 살펴보면, try는 파라미터로 넘기는 심볼로 된 이름의 메소드를 수행시킨다. 일반적인 메소드와는 달리 메소드가 없어도 NoSuchMethodException을 발생 시키지 않는다, 원래코드 다시 쓴 코드 참고 : http://api.rubyonrails.org/v3.0.8/classes/Object.html#method-i-try 2) object가 ni..
레일즈(Rails) 파일업로드 Gem 중 많이 쓰이는 것은 3가지다.1. Paperclip 2. Carrierwave 3. dragonfly 레일즈 툴박스 참고추측컨데, 업로드 사용이 간편한 Gem일수록 사용률이 높은듯하다. 그런데 안타깝게도 내가 사용하는건 2번 carrierwave라 이 내용에 대해 설명하고자 한다. 이 파일 업로더는 기능이 다양하다는 장점을 가지고 있다. 그럼 carrierwave 기본 사용법에 대해 알아보자. 우선 설치방법이다. 설치방법 설치 방법은 심플하다 1. gem을 인스톨 $ gem install carrierwave 2. Gemfile에 추가 gem 'carrierwave' 사용방법 그럼 이제 어떻게 사용하지?예를 들어 설명해보겠다.모 웹사이트 구축중에 사용자 프로필에 프..
요즈음 회사에서 레일즈로 프로젝트를 진행하고 있다. 최근의 경험을 공유해보고자 글을 쓴다.erb 파일에서의 레일즈의 폼은 아래와 같이 구성한다.(스케폴드 해보면 바로 나온다.ㅎㅎ) 이러면 레일즈가 아래처럼 HTML로 렌더링 해준다.이 폼을 submit 해보자.그러면 submit 타켓 controller의 @model.param1에 값이 들어간다. 보통 레일즈 쓰다보면 이쯤에서 구현이 끝난다. 그럼 모든 문제해결?! 그러면 내가 이글을 안쓰지.을 할 수는 없다.업무를 진행하다보면 기획자의 아름다운 요구사항으로 인해, 아래와 같은 얘기를 듣는다 "요 페이지에서 버튼누르면 입력 컬럼이 추가되도록 만들어주세요!""...." 요 말인 즉슨 AJAX 통신을 하든가, 아니면 form 하나로 객체 여러 개를 컨트롤러로..