"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" , но я не знаю, что делать, чтобы разрешить это.
Ответы
Ответ 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 в качестве администратора.