Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 我可以在Windows中将Sass与批处理脚本一起使用吗_Ruby_Windows_Batch File_Sass - Fatal编程技术网

Ruby 我可以在Windows中将Sass与批处理脚本一起使用吗

Ruby 我可以在Windows中将Sass与批处理脚本一起使用吗,ruby,windows,batch-file,sass,Ruby,Windows,Batch File,Sass,在本地机器上的web项目中,我使用了相当简单的Sass设置。 在同一个文件夹中,我有/scss/style.scss和/css/style.css 因此,要在工作时运行Sass,我只需在Ruby终端中编写以下代码: cd "C:\Users\Puppybeard\Documents\Aptana Studio 3 Workspace\Project Title" sass --watch scss/style.scss:css/style.css 工作正常,但有点麻烦,所以我正试图找出如何使用

在本地机器上的web项目中,我使用了相当简单的Sass设置。 在同一个文件夹中,我有/scss/style.scss和/css/style.css

因此,要在工作时运行Sass,我只需在Ruby终端中编写以下代码:

cd "C:\Users\Puppybeard\Documents\Aptana Studio 3 Workspace\Project Title"
sass --watch scss/style.scss:css/style.css
工作正常,但有点麻烦,所以我正试图找出如何使用批处理脚本执行等效操作。 我尝试过以下方法,但这完全是一场灾难,我的计算机试图打开无限多的Ruby控制台

cd "C:\Ruby193\bin"
start ruby
cd "C:\Users\Puppybeard\Documents\Aptana Studio 3 Workspace\Project Title"
sass --watch scss/style.scss:css/style.css
exit
我想我需要做的是在后台启动Ruby,而不是打开Ruby exe。有人知道Ruby是如何工作的吗?显然,我不熟悉Sass、Ruby和批处理脚本,所以您能给我的任何见解都将是一个很大的帮助,谢谢


编辑:我让它像这样工作

cd "\Ruby193\bin"
sass --watch "C:\Users\Puppybeard\Documents\Aptana Studio 3 Workspace\Project Title\scss\style.scss:C:\Users\Puppybeard\Documents\Aptana Studio 3 Workspace\Project Title\css\style.css"
我认为它应该更整洁,并且怀疑sass需要设置$PATH


编辑2:我使用以下说明为Ruby设置Path变量:

在我的例子中,我需要添加的路径是C:\Ruby193\bin 现在,当我将脚本放在web项目的根目录中时,我需要的唯一一行是:

sass——观看scss/style.scss:css/style.css

我可以保留将目录更改为文件夹所在位置的部分,如果我想在计算机上的任何位置运行某些内容的话。但是,脚本没有指定项目位置这一事实意味着我可以将它复制到使用相同结构的任何项目中


值得付出努力吗?从长远来看,可能是的。

将原来的两个命令放入批处理文件中。因此.bat文件的内容将是:

cd "C:\Users\Puppybeard\Documents\Aptana Studio 3 Workspace\Project Title"
sass --watch scss/style.scss:css/style.css

就这么简单。像这样的批处理文件在每一行上一个接一个地运行每个命令,就像您单独键入每个命令一样。

如果您试图用批处理文件更新多个css文件,则如下所示:

scss A.scss ../CSS/A.css
scss B.scss ../CSS/B.css
echo Done.
…但只有第一个scss命令行执行,批处理文件永远不会完成,即,您永远看不到“完成”。下面是修复它的原因和方法:

scss实际上是一个有缺陷的批处理文件,无法将控制权返回到批处理文件。我通过绕过scss批处理文件并直接运行ruby及其scss gem修复了此问题,如下所示:

ruby C:/Ruby193/bin/scss A.scss ../CSS/A.css
ruby C:/Ruby193/bin/scss B.scss ../CSS/B.css
echo Done.

你需要把你的路径指向ruby,或者在上面放一个绝对路径。

你可以使用ruby CMD提示符,然后运行
sass--watch
。我知道,这不是我要问的。嗯,如果我正确设置了sass,我想这是正确的答案。现在就开始为它设置$PATH。路径中不需要Sass,只需要Ruby。Sass是一个Rubygem,因此如果正确设置了Ruby和gems,那么从文件系统的任何地方运行Sass命令都可以工作。要进行检查,请在\Ruby193\bin中查找sass.bat文件。然后检查以确保\Ruby193\bin位于您的路径中。安装sass时,运行它的可执行文件会自动安装在Ruby的bin文件夹中,如下所示。现在只需要一个命令!干杯。请注意,如果
sass
是一个批处理文件,您必须使用
call sass
,如果您想在这之后运行更多行。我无法让它工作。我发现解决方案是将
sass--watch styles.scss:styles.css
替换为
ruby C:/Ruby22-x64/bin/sass--watch styles.scss:../../css/styles.css
。因此,只需在标准sass命令前面加上sass安装的路径目录。