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' %>