percise32 vagrant box上的Rails应用程序 - 资产获取“文本文件繁忙”错误(Errno :: ETXTBSY)

时间:2013-10-01 19:33:21

标签: ruby-on-rails ruby windows asset-pipeline vagrant

尝试在Vagrant框(percise32)主机内启动Rails应用程序是Windows 7。 这是我的Vagrantfile

Vagrant.configure('2') do |config|
  config.vm.box      = 'precise32'
  config.vm.box_url  = 'http://files.vagrantup.com/precise32.box'
  config.vm.hostname = 'rails-dev-box'

  config.vm.synched_folder "c:\rails_text", "/home/code"

  config.vm.network :forwarded_port, guest: 3000, host: 3003

  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = 'puppet/manifests'
    puppet.module_path    = 'puppet/modules'
  end
end

当我尝试运行应用程序(代码正确同步)时,我在Rails服务器输出上收到以下错误:

Errno::ETXTBSY in Welcome#index

Showing /home/code/app/views/layouts/application.html.erb where line #4 raised:
Text file busy - (/home/code/tmp/cache/sass/a0a09a036cf07b1cae262d60fa989a8e24765858/welcome.css.scssc20131001-1595-f6clpt, /home/code/cache/sass/a0a09a036cf07b1cae262d60fa989a8e24765858/welcome.css.scssc)
  (in /home/code/app/assets/stylesheets/welcome.css.scss)

有些文章建议在/ vagrant root之外移动我的同步文件夹是可以治愈的,但是因为我正在使用/ home / code

,所以它似乎不是我的问题。

欢迎提示。

5 个答案:

答案 0 :(得分:13)

看起来Sass的宝石最近更新了(比如昨天或今天) 转到Gemfile并将sass版本设置为3.2.10,然后捆绑更新

宝石'sass','3.2.10'#3.2.11打破了应用程序

答案 1 :(得分:3)

user2840051解决方案工作.. 你需要卸载sass

gem uninstall sass

选择要卸载的版本

使用以下命令修改Gemfile:

gem 'sass', '3.2.10'

最后运行:

bundle update sass

答案 2 :(得分:0)

在sass升级到3.2.12之后,我遇到了同样的问题。我的解决方案是将sass缓存从同步文件夹移到适当的linux文件系统:

options[:cache_location] = "/tmp/sass-cache"

答案 3 :(得分:0)

我和grunt / sass和vagrant有同样的问题。

消息是:

vagrant@precise32:~$ grunt
Running "sass:dist" (sass) task
Errno::ETXTBSY: Text file busy @ sys_fail2 - (./.sass-cache/8147710423c1a1d0096b06b58f36e8601f62e931/main.scssc20140302-6017-1phv8qn, ./.sass-cache/8147710423c1a1d0096b06b58f36e8601f62e931/main.scssc)
  Use --trace for backtrace.
Warning: Exited with error code 1 Use --force to continue.

Aborted due to warnings.

修复方法是,将 cacheLocation 选项添加到 Gruntfile.js ,下面的示例配置。

module.exports = function(grunt) {
    grunt.initConfig({

        sass: {
            dist: {
                options: {
                    style: 'compressed', // compact
                    lineNumbers : false, // true
                    cacheLocation: '/tmp/sass-cache'
                },
            },
        },
    });
}

答案 4 :(得分:-1)

作为一般系统范围的修复

gem uninstall sass
gem install sass -v 3.2.10