Rails app에서 public 하위 파일을 읽어오지 못할 때(Rails not serving static files in public dir)

Rails app에서 public 하위 파일을 읽어오지 못할 때(Rails not serving static files in public dir)

Rails App내 /public은 레일즈 동작과 별개로 static 한 html,css,js 등을 표현할 수 있는 디렉토리입니다.

저는 보통 static 한 테스트 코드들을 여기다가 올려두고 쓰는데, 어느날부터인가 public 하위에 있는 파일들이 정상적으로 로드되지 않았습니다.. (이 시점이 아마 command line => rubymine 으로 넘어간 시점인듯해요)

찾아보니 알게된건데, ruby의 environments에서 RAILS_SERVE_STATIC_FILES 환경변수 값을 읽어 public 하위의 파일들을 읽을지 말지 결정하는 옵션이 있습니다. phase(prod,dev,test 등등) 별로 다르게도 지정할 수 있으니 사용하시는 phase에서 옵션을 제거해주거나, 이에 맞는 값을 세팅해주어 pubilc 하위의 파일을 읽도록 바꿀 수 있습니다.

config/environments/production.rb (각 phase별로..)

# [+] 추가 
config.serve_static_assets = true 

# [-] 삭제
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

또는 환경변수에 RAILS_SERVE_STATIC_FILES를 true로 설정해서 해결 가능합니다.

export RAILS_SERVE_STATIC_FILES=true

혹시라도 public 하위의 모든 파일이 아닌 일부 js/css 의 로드만 필요한 거라면 app/assets/javascript , app/assets/stylesheets 에 넣어주어 아래 코드로 로드되게 하는게 맞을 것 같습니다. (이게 rails가 의도한 액션이곘죠)

<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_include_tag 'application' %>