プログラム(Git、Node Js、Rubyなど)がD:
ドライブにあるときに、プロジェクトファイルをC:
ドライブの新しいPCに移行しました。
SASSファイルの編集後にcompass watch
を実行しようとしましたが、次のエラーが発生します:
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を使用する初心者です(Web開発の目的でのみ使用するため))権限を許可するために何をする必要がありますか?
さらに情報を提供できるかどうかお知らせください。
編集: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 'ですが、これを解決する方法がわかりません。
32ビットまたは64ビットのウィンドウで動作させるために、Min Renの提案を実行しましたが、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"
私はしばらく同じ問題を抱えていましたが、最終的に手動で修正しました。掘り下げた後、問題はutil.rbで一時ファイルの名前が変更されているようですファイルが閉じられる前。 Windowsでは、これは明らかに許可されていません(ただし、過去に取り組んだ後で突然問題が発生した理由はわかりません)。
私にとっての修正は、util.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
ここでの大きな注意点の1つは、私がRubyの人ではないことであり、おそらくもっと良い方法があると確信しています。しかし、私はこのmodをすばやく試してみましたが、うまくいきました。それにもっと入れます。
Sassの最新バージョンのバグのようです。
SassとCompassをアンインストールし、古いバージョンをインストールすると問題が解決します。
動作する新しいバージョンがあるかもしれませんが、ここで私がテストし、動作することを確認しました。
gem uninstall compass
gem uninstall sass
gem install compass -v "0.12.2"
gem install sass -v "3.2.13"
SASS 3.2.19で問題は解決したようです
必要なのはgem update compass
同様のエラーが発生しましたが、解決方法がまったく異なるため、他の誰かが私のシナリオに遭遇した場合に備えて、共有する価値があると思いました。
ソース管理で.cssファイルが読み取り専用になっているため、実際には権限が拒否されていました。解決策は非常に単純で、cssファイルをチェックアウトするだけで、すべてが正常に戻りました。
私も同じ問題を抱えていました。私は提案された---preを使用したアンインストールとインストールを行いましたが、それでも私の問題は解決しませんでした。その後、別の問題に遭遇しました。さて、私がしたことは次のとおりです。コンパスとサスの宝石を再びアンインストールしました。 Ruby/gems/Ruby1.9.1/gemsフォルダー内のコンパスに関連するすべてのgemを削除し(おそらく必要ではないので、確かではありません)、インストールしたもの:gem install compass --version "0.12.2"およびgem install sass-バージョン「3.2.10」。これらの2つの最新バージョンでない限り、ここでのバージョンはそれほど重要ではないと思います。ここで重要なのは、gem uninstall sassです。消去するバージョンまたはすべてのバージョンを確認します。新しいものを削除してください。ここでの秘訣は、compassが最新バージョンのsassを自動的にインストールすることです。古いコンパスをインストールしても、コンパス付きの新しいコンパスがすでに使用されているため、問題ありません。それを試してみてください。
管理者としてcygwinコマンドのプロンプトウィンドウを実行すると、問題が解決しました。
SASSをアンインストールします:gem uninstall sass
COMPASSをアンインストールします:gem uninstall compass
--pre COMPASSバージョンをインストールします:gem install compass --pre
--pre SASSバージョンをインストールします:gem install sass --pre
私は同様の問題を抱えていましたが、コンパスとサスの両方をアンインストールすることで解決できました:
gem uninstall compass
gem uninstall sass
次に、コンパスをインストールするだけです。
gem install compass
sassはコンパスのインストールの一部として必要なので、個別にインストールする必要はありません。私が直面していた問題は、コンパスのインストールの一部としてインストールされたバージョンと手動でインストールしたバージョンの間に矛盾があったことでした。