1

我已经配置了一个使用 nginx 和 Phusion Passenger 托管的 Rails 应用程序。当我在一切正常加载的情况下访问该站点时,http://hostname/vns/我看到请求的字体文件出现 404 错误:

open() "/sites/apps/assets/fontawesome-webfont-f1c2889911d212e1403b68eabc1a3a5
6.svg" failed (2: No such file or directory)

该应用程序位于 /sites/ruby-apps/application/ 和 /sites/apps/vns 是 /sites/ruby-apps/application/public/ 的符号链接

当我查看生成的 CSS 时,rake assets:precompile我看到 public/assets 中有两个 application.css 文件。

application.css 在 src:url ("/vns/assets/fontawesome-webfont.eot") 中列出了正确的路径 application-md5fingerprint.css 没有正确的路径 ("/assets/fontawesome-webfont-009f6d1f667cc42c25e712ab3429cbc7.eot" )

根据到目前为止我试图弄清楚的内容,我应该使用 RAILS_RELATIVE_URL_ROOT 但到目前为止,当我将它包含在我的 production.rb 文件中时,它似乎没有任何影响,如下所示:

ENV['RAILS_RELATIVE_URL_ROOT'] = "/vns"

我的配置的相关部分:

http {
...
  passenger_root /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.10;
  passenger_ruby /usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby;
  passenger_max_pool_size 10;
  passenger_pool_idle_time 0;

  passenger_log_level 0;
  passenger_debug_log_file /var/log/nginx/passenger.log;
...
}

server {
...
  passenger_base_uri /vns;

  location /vns {
    passenger_enabled on;
  }
...
}

如果有人能帮助我指出解决这个问题的正确方向,我将不胜感激。

4

1 回答 1

1

经过数小时的尝试解决后,我发布了此问题,并在大约五分钟后解决了我自己的问题。在此处为可能会发现此问题的其他人提供答案:

看起来我使用 ENV['RAILS_RELATIVE_URL_ROOT'] 不正确。

当我将它移动到我的资产预编译行时,如下所示:

RAILS_RELATIVE_URL_ROOT='/vns' rake assets:precompile

一切都按预期进行。我对 Rails 不够熟悉,不知道我做错了什么,或者是否有更好的方法来解决这个问题,但这对我来说已经解决了。

于 2013-08-12T14:34:10.570 回答