RubyOnRails
@초록머리님이 위키를 게시했습니다.

Rails Tip

Tip

데이터베이스 정보를 csv문서로 추출

require 'csv'

file = "#{Rails.root}/파일명.csv"

models = ...(출력을 원하는 모델 선택)...

CSV.open( file, 'w' ) { |writer| models.each { |model| writer << [model.guest_name, models.guest_email, models.body] } }

실서버에서 레일즈 콘솔 진입

cd /data/프로젝트명/current/
RAILS_ENV=production bin/rails c

로그 보기

tail -f Rails.root/log/RAILS_ENV.log

스크립트 파일 만들어서 실행하기

  • 스크립트(ex. 데이터를 조작하는 스크립트) 파일을 만들어서 실행할 수 있다
  • 아래의 경로에 .rake 파일을 만든다.
  • 프로젝트명/lib/task/스크립트파일명.rake
  • .rake파일 예시
  • namespace :migrate do
    desc "스크립트 설명"
    task :스크립트이름 => :environment do
    실행하고자 하는 루비명령
    end
    end
  • 스크립트 명령어 내부에 'byebug' 명령어를 통해 byebug가 위치하는 시점까지의 스크립트만 실행하고 중간에 데이터를 확인할 수 있습니다.
  • namespace :migrate do
    desc "스크립트 설명"
    task :스크립트이름 => :environment do
    실행하고자 하는 루비명령1
    byebug
    실행하고자 하는 루비명령2
    end
    end
  • 'ActiveRecord::Rollback' 명령을 스크립트 마지막에 붙임으로써, 제대로된 스크립트가 짜지기 전까지 안전하게 테스트스크립트를 실행해 볼 수 있습니다.
  • namespace :migrate do
    desc "스크립트 설명"
    task :스크립트이름 => :environment do
    실행하고자 하는 루비명령
    ActiveRecord::Rollback
    end
    end
  • 터미널에서 만든 스크립트를 실행합니다
    • bin/rake migrate:스크립트이름
    • 터미널에 bin/rake T를 통해 내가 작성한 스크립트의 이름을 찾을 수도 있습니다.
    • 스크립트에 byebug 명령어를 투가했을 경우, 'cont' 명령을 통해 이후의 스크립트로 진행할 수 있습니다. 'exit'를 통해 빠져나갈 수 있습니다.

ActieRecord가 아닌 모델 작성하기

http://blog.isnorcreative.com/2014/05/08/easier-non-activerecord-models-in-rails-4.html

페이스북 로그인

페이스북에 원하는 웹 주소와 연결된 앱의 정보를 아래와 같이 .powenv에 설정합니다.

export FACEBOOK_APP_ID="키값"
export FACEBOOK_APP_SECRET="키값"

키값은 https://developers.facebook.com > 내 앱 에서 확인할 수 있습니다.

nokgiri 설치 오류

http://stackoverflow.com/a/39940668/6616813

carrierwave로 아이폰촬영이미지를 업로드했을때 사진 방향이 잘못되는 오류

아이폰촬영사전을 carrierwave로 업로드 했을때 EXIF정보를 가져오지 못하는 오류가 생깁니다.
image_uploader.rb 와 같은 이미지 업로드 클래스에 아래의 코드를 추가해줍니다.

def fix_exif_rotation
manipulate! do |img|
img.tap(&:auto_orient)
end
end

process :fix_exif_rotation

 

타운홀의 comments가 broadcast되지 않는 현상 개선

  1. 에러 : save 메소드 안의 broadcast에서 current_user가 없습니다!
  2. comments.js - comment_channel.rb 의 save 메소드가 사용됩니다.
ActionCable.server.broadcast("comment_channel", {
action: action,
dom_id: dom_id(comment),
message: ApplicationController.renderer.render(
partial: 'comments/comment',
locals: { comment: comment, current_user: current_user })
}
  • 해결 : locals에 current_user: current_user 추가.
  • 주의 : comments를 입력/수정하면, ApplicationController.renderer.render 메소드에 데이터를 주입.

 

restrict_with_error의 오류가 다른 assocation에서 난다면 어떻게 대처하지?

 

UniqueSoftDeletable 사용법 알아보기

작성
공감해요
기술 가이드 채널의 다른 게시글 더 보기
기술 가이드 채널의 다른 게시글 더 보기
기술 가이드 채널은? 자세히 보기
빠띠에 쓰이는 기술을 소개하고 그 기술을 익히기 위한 가이드를 모읍니다.
기술 가이드 채널에 가입해서 흥미진진한 소식을 받아보세요.
가입하기