我正在开发一个在Ruby 1.9和Rails 2.3.18下运行的遗留Ruby on Rails应用程序。
我通过Apache与Passenger一起提供应用程序。
我在production.log中收到错误,表明Rails或Web服务器处理公用文件夹的方式有问题,例如
ActionController::RoutingError (No route matches "/javascripts/picnet.table.filter.min.js" with {:method=>:get})
导致错误的所有必需资产都在应用程序公用文件夹中。 请注意,这是在Rails 2而不是Rails 3或4下。
应用程序的我的Apache主机条目如下所示:
<VirtualHost 127.0.0.1:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/Users/evanbrown/Documents/apache-keys/server.crt"
SSLCertificateKeyFile "/Users/evanbrown/Documents/apache-keys/server.key"
ServerAdmin me@localhost
DocumentRoot "/Users/evanbrown/Documents/bl-app/public"
ServerName blapp.localhost
ServerAlias blapp.localhost
ErrorLog "/private/var/log/apache2/localhost-error.log"
PassengerRuby "/Users/evanbrown/.rvm/gems/ruby-1.9.3-p547@rails2/wrappers/ruby"
CustomLog "/private/var/log/apache2/localhost-access.log" common
<Directory "/Users/evanbrown/Documents/bl-app/public">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Options -MultiViews
PassengerAppEnv production
</Directory>
</VirtualHost>
Passenger正确地提供了应用程序,但由于公用文件夹中的所有样式表和Javascripts都导致路由错误,因此输出都是错误的。
我已经阅读了很多帖子,说明配置错误的config.serve_static_assets会导致这些问题,但这似乎仅适用于Rails 3,因为Rails 2中的config下没有选项serve_static_assets。
我的公共文件夹归Apache用户和组所有,据我所知,它是OS X下的_www:_www。
-rwxrwxrwx 1 _www _www 947 5 Nov 11:20 404.html
-rwxrwxrwx 1 _www _www 930 5 Nov 11:20 422.html
-rwxrwxrwx 1 _www _www 948 5 Nov 11:20 500.html
-rwxrwxrwx 1 _www _www 0 5 Nov 11:20 favicon.ico
-rwxrwxrwx 1 _www _www 14571 5 Nov 11:20 favicon.png
drwxrwxrwx 4 _www _www 136 5 Nov 11:20 images
drwxrwxrwx 11 _www _www 374 5 Nov 11:20 javascripts
-rwxrwxrwx 1 _www _www 204 5 Nov 11:20 robots.txt
drwxrwxrwx 4 _www _www 136 5 Nov 11:20 stylesheets
任何人都可以帮我找出解决这个问题的方法吗?非常感谢你的帮助。