我们有一个Grunt和Bundler设置的项目。所有这些安装没有问题。生成Gemfile.lock,下拉正确的gem,以及使用npm创建的grunt文件。我们开始监视项目并且它在sass编译时爆炸,因为它使用的是错误版本的sass而不是gemfile中指定的版本。
顺便说一下,这是在Windows上......
的Gemfile
source 'https://rubygems.org'
gem 'sass', '~> 3.2'
gem 'compass', '~> 0.12'
gem 'susy', '~> 1.0'
Gemfile.lock的
GEM
remote: https://rubygems.org/
specs:
chunky_png (1.3.1)
compass (0.12.6)
chunky_png (~> 1.2)
fssm (>= 0.2.7)
sass (~> 3.2.19)
fssm (0.2.10)
sass (3.2.19)
susy (1.0.9)
compass (>= 0.12.2)
sass (>= 3.2.0)
PLATFORMS
x86-mingw32
DEPENDENCIES
compass (~> 0.12)
sass (~> 3.2)
susy (~> 1.0)
答案 0 :(得分:6)
如果您想将您的宝石限制在捆绑包中的那些(在Gemfile中列出),那么在终端中运行命令时,您应该在命令前添加bundle exec
。
例如。如果您正在运行sass --watch
,那么您将运行bundle exec sass --watch
以确保使用捆绑中的版本。
bundle exec
上的文档:http://bundler.io/man/bundle-exec.1.html
答案 1 :(得分:0)
基于非正式实验(在我的Gruntfile的同一级别向我的项目添加GEMFILE),如果您正在使用Compass任务并将任务选项“bundleExec”设置为true,则任务应依赖于bundler处理版本和依赖项。使用此设置,仅在运行“grunt server”(而不是“bundle exec grunt server”)时创建了一个lockfile。如果这是错误的或误导性的建议,请任何人纠正我。这两种方法似乎都适用于我的环境。
答案 2 :(得分:0)
在unix上,您可以使用以下命令进行检查:
which sass
应该返回类似的内容:
/Users/[username]/.rbenv/shims/sass
如果它类似于/usr/bin/sass
,那么您需要在{@ 1}}前面添加@sevenseacat提及的命令。