我遇到了使用自定义RackFilter设置并能够正确定位或利用rake的问题:生产中的预编译功能。 我的环境如下:使用RackFilter和资产的滑轨
jruby 1.7.3
Rails 3.2.12
的,我使用的机架过滤器映射如下:
<filter-mapping>
<filter-name>RackFilter</filter-name>
<url-pattern>/r/*</url-pattern>
</filter-mapping>
要利用资产管道,不使用预编译的发展,我添加以下内容application.rb
config.assets.prefix = "/r/assets"
所有这些在开发模式下工作正常。当我尝试在生产模式下运行应用程序时,问题就开始了。当我做一个资产:预编译我的资产目录结构是这样的:
/public/r/assets
,当我尝试和运行应用程序,我得到以下错误:
ActionView::Template::Error (application.css isn't precompiled):
指向我的方向应用程序不能正确定位manifest.yml文件,所以我添加下面我production.rb:
config.assets.manifest = Rails.root.join( “公共/ R /资产”)
,然后我得到以下错误:
[WARN] 404 - GET /r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
我试图改变我的production.rb包括:
config.assets.prefix = "public/r/assets"
但仍获得
[WARN] 404 - GET /public/r/assets/application-3b09aaf17ec25843ede11b1160ca46ab.css
所以在这一点上我我正在用尽想法,可以使用任何建议或想法。非常感谢你!
当你做一个bundle exec rake assets:precompile时,它不应该在另一个目录中创建一个目录。我相信你应该在你的公共目录中有'public/assets'。你也尝试过'rake资产:预编译RAILS_ENV = production'。另外可以肯定的是,您的production.rb中的以下设置为'true' - 'config.assets.compile = true'? – David 2013-03-20 15:03:54
感谢您的快速回复@David。我将我的资产文件夹移至公共/资产而不是公共/资产。我也在我的production.rb中更改了配置,以使用config.assets.compile = true,但是,我并不想首先更改此设置,因为从我读过的内容来看,这确实会降低性能。我现在得到一个错误:ActionView :: Template :: Error(File to import not found or unreadable:foundation/foundation-global。因此我正在尽最大努力通过这个来确定你的解决方案是否能够工作。谢谢! – 2013-03-20 15:32:51
另外,我相信资产:precompile正在制作public/r/assets目录结构,因为我的config.assets.prefix =“/ r/assets”,这是必需的,因为我使用的机架过滤器是“ r/*“ – 2013-03-20 15:40:22