라벨이 Ruby on Rails인 게시물 표시

Ruby on Rails 포트 변경 방법

  루비 온 레일즈의 기본 포트는 3000번으로 잡혀 있죠. 그렇다면 레일즈의 포트를 바꾸려면 어떻게 해야 할까요?   단순히 생각하면, 서버를 시작할 때마다 인수에 3000번 포트를 지정하는 방법이 있는데, 매번 이러긴 좀 많이 번거롭죠. 한 번 지정해 놓으면 바꿀 필요가 없는 방법을 찾아보니 이런 방법이 있더라고요.   /config/boot.rb 에 아래 코드를 추가하세요. require 'rails/commands/server' module Rails class Server def default_options super.merge!(:Port => 3001) end end end   이제 루비 온 레일즈의 포트가 3001 번으로 지정됐습니다. 참 쉽죠?

Rails 커피스크립트에서 레일즈 코드 사용하는 방법!(erb)

  기본적으로 생성된 커피스크립트 파일에서는 erb가 지원되지 않아 레일즈 코드를 사용할 수 없습니다. 커피스크립트 내부에서 프로그래밍 처리가 돼야 하는 경우에 매우 곤란하죠.   그렇다면 어떻게 커피스크립트에서 레일즈 코드를 사용할 수 있을까요? 방법은 충격적일 정도로 간단했습니다. .coffee파일 뒤에 .erb 확장자를 붙이면 됩니다.   예를 들어, assets/javascripts/a.coffee 파일에서 erb를 사용하고 싶다면 assets/javascripts/a.coffee .erb 만 추가해주시면 정상적으로 문제없이 erb를 사용할 수 있습니다.   간단하지만 매우 유용한 꿀팁.

Rails 마이그레이션 중 NOT NULL, DEFAULT 등등 설정하는 방법

  db/migrate/20140910171610_create_my.rb에 아래와 같이 생성된 마이그레이션 파일이 있다고 칩시다. class CreateVideos   url은 당연히 비어 있으면 안 되고, desc는 기본적으로 '설명이 없습니다.'를 표시하게 하고 싶습니다. 또, views와 recommand는 기본적으로 0이란 값을, up_date는 현재 날짜와 시각 정보를 자동으로 입력하고 싶은데 어떻게 해야 할까요?   정답은 상황에 맞는 심볼을 조작하면 됩니다. class CreateVideos false t.text :desc, :default => '설명이 없습니다.' t.integer :views, :default => 0 t.integer :recommand, :default => 0 t.datetime :up_date, :default => Time.now() t.datetime :mod_date t.timestamps end end end

DATETIME과 TIMESTAMP의 차이점

  DATETIME은 1000년부터 9999년까지 의 모든 날짜와 시간을 저장하는 8바이트 짜리 형식이고,   TIMESTAMP는 1970년 1월 1일부터 2038년 12월 31일까지 의 모든 날짜와 시간을 저장하는 4바이트 짜리 형식입니다.   만약 사용해야 하는 날짜가 1970년 이전이거나 2038년 이후라면 DATETIME을 써야하고, 그 이내라면 TIMESTAMP를 쓰는 것이 최적화에 도움이 되겠죠.   출처: 스택오버플로우

Asset filtered out and will not be served 에러 해결 방법

  예전에 대회 나갈 때 레일즈 서버가 필요할 것 같아서 준비하다가 scss, coffee파일을 stylesheet_link_tag 메서드와 javascript_include_tag로 링크하던 도중 Assets filtered out and will not be served 라는 에러가 발생했었는데 그 해결 방법을 공유합니다.   우선 저 에러가 왜 생기는지부터 알려드릴게요. scss파일, coffee은 클라이언트에게 보여지기 전에 우선 서버에서 컴파일을 거쳐야합니다. 그러나 stylesheet_link_tag로 링크를 걸 경우 컴파일이 되기 전 상태에서 링크를 걸려고 시도하기 때문에 에러가 납니다.   즉, 해결하기 위해서는 미리 컴파일을 해야 한다는 것이죠. config/initializers/assets.rb 파일을 여시고 아래와 같은 코드를 추가해주신 후 서버를 재부팅하시면 해결됩니다. Rails.application.config.assets.precompile += %w( scss파일명.css coffee파일명.js )

ActionView::Template::Error turbolinks.js.coffee 해결 방법

  레일즈 4.0으로 컨트롤러를 만들고 결과를 보려는데 ActionView::Template::Error 가 발생하고 turbolinks.js.coffee파일을 보라길래 해당 파일을 이리저리 뒤졌으나 아무런 문제도 발견하지 못했습니다.   뭐지... 하고 구글링을 하다가 결국 이 페이지 에서 해답을 구해 공유합니다.   우선 [루비 설치 폴더]\lib\ruby\gems\[버전]\gems\execjs[-버전]\lib\execjs\runtimes.rb 파일을 열어주세요.     JScript = ExternalRuntime.new 로 시작하는 부분을 찾아 아래와 같이 수정해주세요. JScript = ExternalRuntime.new( :name => "JScript", :command => "cscript //E:jscript //Nologo", #" //U", :runner_path => ExecJS.root + "/support/jscript_runner.js", :encoding => 'UTF-8' # CScript with //U returns UTF-16LE )

tzinfo 관련 에러 해결 방법

  rails new로 프로젝트를 생성하고, rails s로 서버를 실행하려 했다. 하지만 실행이 되지 않고 아래와 같은 메세지가 뜬다면? No timezone data source could be found. To resolve this, either install TZInfo::Data (e.g. by running `gem install tzinfo-data`) or specify a zoneinfo directory using `TZInfo::DataSource.set(:zoneinfo, zoneinfo_path)`. (TZInfo::DataSourceNotFound)   일단 첫 번째로 해야 하는 작업은 gem install tzinfo-data 를 실행하는 것입니다. 보통은 이 방법으로 해결되고 정상적으로 서버가 실행될 것이지만, 저처럼 그렇지 않을 수도 있습니다.   그렇지 않은 경우는 64비트 환경에서 발생하는데, gemfile에 64비트 플랫폼이 제대로 지정되어 있지 않기 때문 입니다. gemfile에 64비트 플랫폼이란 것을 지정해주면 에러가 사라지고 정상적으로 서버를 실행할 수 있게 됩니다.   현재 프로젝트의 gemfile을 열고 아래와 같이 수정하시면 됩니다. # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo' gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw]   이제 정상적으로 서버를 실행하실 수 있을 겁니다.