Rails 3.1改变了它处理资产管道的方式,并且在部署到生产时导致了问题.
我正在使用Apache和Passenger,它似乎工作正常.
我的制作设置如下(现在).
# congif/environments/production.rb
config.cache_classes = false
config.consider_all_requests_local = true
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
Run Code Online (Sandbox Code Playgroud)
我运行rake资产:在Ubuntu上预编译并启动服务器.没别的了.没有我的图片加载.
传说中的"我在此URL找不到图像"框.
我运行rake资产:在CentOS上预编译并启动服务器.并且......许可错误.
*Error Compiling CSS Asset*
Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95
[path to RVM Ruby]/fileutils.rb:243:in 'mkdir'
Run Code Online (Sandbox Code Playgroud)
我不能让它让步.任何帮助是极大的赞赏.谢谢!
这个解决方案每次都适合我:
首先清理您的资产
rm -rf public/assets
Run Code Online (Sandbox Code Playgroud)
和
rake assets:clean RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
第二,在#production.rb中改变
config.assets.compile = false
Run Code Online (Sandbox Code Playgroud)
至
config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)
第三,运行以预编译您的资产
rake assets:precompile RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
第四,在#production.rb中改变
config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)
回到
config.assets.compile …Run Code Online (Sandbox Code Playgroud) 这是一个奇怪的.我今天启动了一个新的Rails 4应用程序,然后创建了一个名为transfer_functions的资源.当我点击像localhost:3000/transfer_functions/1这样的网址时,它会将/favicon.ico附加到它的末尾,我在服务器控制台中收到此错误.
ActionController::RoutingError (No route matches [GET] "/transfer_functions/1/favicon.ico"):
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
该应用程序使用'turbolinks'宝石.
我正在使用Twitter Bootstrap并使用相应的生成器创建应用程序布局.我从application.html.haml文件中删除了这一行,它修复了问题.
%link(href="favicon.ico" rel="shortcut icon")
Run Code Online (Sandbox Code Playgroud)
不确定我理解为什么会导致问题.