Подтвердить что ты не робот

"Errno:: EACCESS... разрешение отклонено", выполняющий просмотр компаса

Я просто перенес свои файлы проектов на новый компьютер на диске D:, в то время как мои программы (Git, Node Js, Ruby и т.д.) находятся на диске C:.

Я попытался запустить compass watch после редактирования файла SASS, но столкнулся с этой ошибкой:

Errno::EACCES on line ["897"] of C: Permission denied - <D:/project_dir/stylesheets/app.css20140323-10532-gziux, D:/project_dir/stylesheets/app.css>
Run with --trace to see the full backtrace

Я начинаю с Ruby в командной строке (поскольку я использую его только для целей веб-разработки). Что мне нужно сделать, чтобы разрешить разрешения?

Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

EDIT: Вот что было возвращено после запуска compass watch --trace:

D:\project_dir>compass watch --trace
>>> Change detected at 21:53:53 to: app.scss
overwrite stylesheets/app.css
Errno::EACCES on line ["897"] of C: Permission denied - (D:/project_dir/stylesheets/app.css20140323-14712-11v62k7, D:/project_dir/stylesheets/app.css)
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sass-3.2.18/lib/sass/util.rb:897:in `atomic_create_and_write_file'
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/actions.rb:58:in `write_file'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:143:in `compile'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:118:in `compile_if_required'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:103:in `block (2 levels) in run'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:101:in `each'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:101:in `block in run'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:126:in `timed'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:100:in `run'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/watch_project.rb:147:in `recompile'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/watch_project.rb:68:in `perform'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/base.rb:18:in `execute'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/project_base.rb:19:in `execute'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/exec/sub_command_ui.rb:43:in `perform!'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/exec/sub_command_ui.rb:15:in `run!'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/bin/compass:30:in `block in <top (required)>'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/bin/compass:44:in `call'
    C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/bin/compass:44:in `<top (required)>'
    C:/Ruby200-x64/bin/compass:23:in `load'
    C:/Ruby200-x64/bin/compass:23:in `<main>'
>>> Compass is polling for changes. Press Ctrl-C to Stop.

Я не знаю, что из этого делать.

Из некоторого чтения (https://github.com/chriseppstein/compass/issues/1406) Я считаю, что это связано с правами или PATH для 'Ruby' и "Ruby Gems" , но я не знаю, что делать, чтобы разрешить это.

4b9b3361

Ответ 1

Чтобы заставить его работать в 32 или 64-битных окнах, я сделал то, что предложил Мин Рен, но мне также пришлось вручную очистить репозиторий gem (C:\Users\myusername\.gem\specs\rubygems.org%443\quick\Marshal.4.8) всех файлов sass и compass gemspec после шагов удаления. Я также установил sass перед компасом.

gem uninstall compass
gem uninstall sass

вручную очистить .gem

gem install sass --version "3.2.10"
gem install compass --version "0.12.2" 

Ответ 2

У меня была такая же проблема на некоторое время, и в конечном итоге она была исправлена ​​вручную. После некоторого копания проблема заключается в том, что в util.rb временный файл переименовывается до закрытия файла. В Windows это, по-видимому, не разрешено (хотя не знаю, почему я вдруг начал получать проблему после того, как он работал над прошлым).

Исправление для меня состояло в том, чтобы отредактировать утилиту .rb(PATH_TO_RUBY\lib\ruby ​​\ gems\1.9.1\gems\sass-3.2.18\lib\sass\util.rb). Я скопировал строку, закрывающую временный файл, до изменения разрешения + переименовать в строке 897. Вот обновленная функция, так как у меня теперь есть:

def atomic_create_and_write_file(filename, perms = 0666)
      require 'tempfile'
      tmpfile = Tempfile.new(File.basename(filename), File.dirname(filename))
      tmpfile.binmode if tmpfile.respond_to?(:binmode)
      result = yield tmpfile
      tmpfile.flush # ensure all writes are flushed to the OS
      begin
        tmpfile.fsync # ensure all buffered data in the OS is sync'd to disk.
      rescue NotImplementedError
        # Not all OSes support fsync
      end
      tmpfile.close if tmpfile
      # Make file readable and writeable to all but respect umask (usually 022).
      File.chmod(perms & ~File.umask, tmpfile.path)
      File.rename tmpfile.path, filename
      result
    ensure
      # close and remove the tempfile if it still exists,
      # presumably due to an error during write
      tmpfile.close if tmpfile
      tmpfile.unlink if tmpfile
    end

Одно большое предостережение здесь в том, что я не человек Руби, и я уверен, что, вероятно, лучший способ. Но я просто пробовал этот мод быстро, и он работал, поэтому я больше не вкладывал в него.

Ответ 3

Он выглядит как ошибка в самой новой версии Sass.

Удаление Sass и Compass и установка старых версий устраняет проблему.

Могут быть более новые версии, которые действительно работают, но вот то, что я тестировал и знаю, работает.

gem uninstall compass
gem uninstall sass

gem install compass -v "0.12.2"
gem install sass -v "3.2.13"

Ответ 4

Похоже, проблема решена в SASS 3.2.19

так что все, что вам нужно, это gem update compass

Ответ 5

Я получал подобную ошибку, но имел совершенно другое разрешение, поэтому я подумал, что стоит поделиться тем, что кто-то еще сталкивается с моим сценарием.

Я действительно получил разрешение, потому что мой исходный контроль сделал мои .css файлы доступными только для чтения. Решение было достаточно простым, просто проверьте файлы css, и все вернулось к нормальному.

Ответ 6

У меня была та же проблема. Я сделал предложение - удалить и установить с помощью --pre, однако это не решило мою проблему. После этого я столкнулся с другими проблемами. Ну, тогда я сделал следующее: я снова удалил компас и сассис. Я удалил все связанные с компасом драгоценные камни в папке ruby ​​/gems/ruby1.9.1/gems (что, вероятно, не обязательно, не обязательно), и я установил: gem install compass --version "0.12.2" и gem install sass - версия "3.2.10". Я не думаю, что версии здесь слишком важны, пока это не новейшие версии этих двух. Теперь важный бит здесь: gem uninstall sass. Он спросит вас, какая версия будет уничтожена или все они. Удалите новый. Хитрость здесь заключается в том, что компас автоматически устанавливает новую версию sass. Поэтому, если вы устанавливаете более старую, это не имеет значения, так как есть уже более новый с компасом, который будет использоваться. Попробуйте.

Ответ 7

Удалить SASS: gem uninstall sass

Удалить COMPASS: gem uninstall compass

Установите версию --pre COMPASS: gem install compass --pre

Установите версию --pre SASS: gem install sass --pre

Ответ 8

У меня была аналогичная проблема, и я смог ее решить, сняв оба компаса и sass:

gem uninstall compass 
gem uninstall sass

Затем все, что вам нужно сделать, это установить компас:

gem install compass

sass требуется как часть установки компаса, поэтому не нужно устанавливать его отдельно. Похоже, что проблема, с которой я столкнулся, состояла в том, что возник конфликт между версией, установленной как часть установки компаса, и той, которую я установил вручную.

Ответ 9

Проблема была решена для меня, когда я запустил окно командной строки cygwin в качестве администратора.