Rails sprocket错误:编译CSS资源时出现CHOWN问题

6

我已经为此苦恼了两天,但似乎无法找出问题所在。这主要与我的设置有关,但如果有人能帮我解决这个问题,那么我将永远成为他的奴隶..!

我正在运行Snow leopard(宿主机),并在VMware Fusion上运行Ubuntu Lucid server(客户机操作系统)。经过一番努力,我设法从Mac共享工作区到Ubuntu。因此,实质上我已经能够在虚拟机上隔离我的开发环境,这使得整个开发团队可以在相同的环境下工作,而不受其宿主操作系统/设置等的影响。虽然这确实让一切变得容易,但我遇到了一个由于sprockets(我猜)引起的特定问题。每次我更改样式表并重新加载时,都会出现此错误:

Error compiling CSS asset

Errno::EPERM: Operation not permitted - /mnt/hgfs/banjarey/tmp/cache/assets/DCF/780/sprockets%2F5f78b3457def1d02bd3fb75d4e0cfb63

/home/coderboy/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.0/lib/active_support/core_ext/file/atomic.rb:38:in `chown'

奇怪的是,如果我重新加载页面两三次,CSS就会编译,一切正常。

每次进行CSS更改时都要重载页面两三次真是太糟糕了。我已经尝试过成员资格和权限,但由于我是业余爱好者,可能没有深入探索。

大家有什么想法吗?


我非常确定这是一个文件系统权限问题。 - thomasfedb
@thomasfedb 嗯,我很确定是一样的...虽然真的想不出为什么每次都会发生两三次,然后就正常工作了! - hashpipe
4个回答

2
这个回答有点晚了,但每次部署应用都进行chmod看起来不是一个好的解决方案。我认为问题在于你的apache实例和passenger实例以不同的用户运行。所以解决方案是检查你的apache服务器正在以什么用户身份运行,并设置PassengerDefaultUser。
例如:
PassengerDefaultUser www-data
这对我有效。因为passenger只能让文件被nobody读取,如果刷新几次它会奇怪地工作,但确保它们是相同的用户可以避免这个错误。

你是怎么修改的? - AustinT

2

我有同样的问题。我的解决方案是在预编译资产后修改文件权限:

#chown apache.root yourapp -R
#chmod 755 yourapp -R

1

我在开发中遇到了同样的错误!清理并重新编译资源后问题得到解决:

 rake assets:clean && rake assets:precompile

0

确保底层文件系统支持所请求的操作。 以下命令对我有用。

mv public/assets /tmp
ln -s /tmp/assets public/assets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接